function some_function() {
$template_options = get_post_meta(get_the_ID(), 'the_s_t_l_id', true);
if ('layout_7' === $template_options || 'layout_8' === $template_options || 'layout_9' === $template_options){
echo 'displaynone';
}
}
Classe →
.displaynone {display:none;}
Mais quand j'appelle la fonction ça ne marche pas ici →
<aside class="sidebar <?php some_function(); ?>">
Toutefois, si j'appelle cette fonction ailleurs et si la logique est vraie, la classe prévue est imprimée.
quelle est la raison pour laquelle il ne fonctionne pas dans l'endroit souhaitable alors?
En effet, certaines fonctions ne fonctionnent que dans la boucle WordPress, comme get_the_id()
. Cela retournera la valeur correcte à l'intérieur de la boucle WP dans les fichiers de modèle, mais lorsqu'il est appelé à d'autres endroits, il ne renvoie pas la valeur correcte et la vérification échoue.
Voir ceci pour plus d'informations sur la boucle WordPress
https://codex.wordpress.org/The_Loop
En dehors de la boucle, vous pouvez soit utiliser l'objet global $post
pour obtenir l'ID comme ceci
global $post
$id = $post->ID;
Sinon, vous pouvez essayer cela
$id = get_queried_object_id();