web-dev-qa-db-fra.com

comment créer une content_width conditionnelle pour un thème wordpress?

J'essaie de créer une déclaration conditionnelle pour la largeur du contenu dans le fichier functions.php de mon thème. Ainsi, certaines catégories auront une content_width de 580, d'autres 900. Cela permettra à oEmbed de fonctionner correctement quelle que soit son utilisation.

Généralement, vous avez ceci dans votre functions.php:

if ( ! isset( $content_width ) ) 
    $content_width = 900;

Je veux quelque chose comme ça:

if(in_category(array('news','blog'))) {
   $content_width = 580;
} 
elseif(is_page()) {
   $content_width = 580;
}
else {
   $content_width = 900;
}

Quand j'ai ce dans mon functions.php la largeur du contenu devient ce que j'écris dans la dernière ligne.

Est-ce que je manque quelque chose? Est-ce seulement possible?

Merci!

7
SteveLambert

Non, ce n'est pas possible. $ content_width est une constante pour l'ensemble du thème et est définie dans functions.php avant que les conditions de la requête ne soient définies.

$ content_width est utilisé pour déterminer les tailles d'image intermédiaires dans image_send_to_editor. La taille "grande" de l'image sera définie sur la valeur $ content_width.

Si vous avez besoin de modifier ces tailles sur une base par catégorie, vous pouvez vous connecter à ce filtre ... voir ma réponse à la question changer set_post_thumbnail_size en fonction de la page d'administration de type post pour un exemple général de la façon dont cela peut être done (notez que cela échouera presque toujours si vous essayez de le faire par catégorie, car la catégorie de publication n'est presque toujours pas définie lorsque l'utilisateur télécharge une image pour la première fois - la définition par type de publication est un peu plus fiable)

Quelle que soit la largeur de vos publications et de vos pages, définissez $ content_width sur la plus grande image que vous souhaitez qu'un utilisateur ajoute à une publication.

9
goldenapples

Peut-être que cela fonctionne:

if(in_category(array('news','blog'))) {
   $GLOBALS['content_width'] = 580;
} 
elseif(is_page()) {
   $GLOBALS['content_width'] = 580;
}
else {
   $GLOBALS['content_width'] = 900;
}
0
Anonym