web-dev-qa-db-fra.com

Fonction ne fonctionne pas au même endroit

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?

1
The WP Novice

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();
1
LumberHack