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

Publié par Jean-Michel le

J’essaie de créer une instruction conditionnelle pour la largeur du contenu dans le functions.php de mon thème. Ainsi, certaines catégories auront un content_width de 580, d’autres 900. Cela permettra à oEmbed de fonctionner correctement partout où il est utilisé.

Habituellement, vous auriez 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;
}

Lorsque j’ai ceci 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!

Solution n°1 trouvée

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;
}

Solution n°2 trouvée

Non, ce n’est pas possible. $content_width est une constante à l’échelle du thème, et elle est définie dans functions.php avant que l’une des conditions de la requête ne soit définie.

$content_width est utilisé pour déterminer les tailles d’image intermédiaires dans image_send_to_editor. La « grande » taille de l’image sera définie sur la valeur de $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 du type de publication pour un exemple général de la façon dont cela peut être fait (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éfinir 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 l’image la plus large que vous souhaitez qu’un utilisateur inclue dans une publication.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *