web-dev-qa-db-fra.com

Obtenir le numéro de post actuel dans functions.php

Je dois obtenir l'ID de l'article actuel dans un tableau dans mon functions.php.

function filter_query(  $query ) {
    $query['post__not_in'] = array(7);
    return $query;
}
add_filter('wpc_query', 'filter_query', 1 );

get_the_ID(); ou global $post; $id = $post->ID; n'a pas fonctionné pour certaines raisons.

1
CaraMar

Je crois que cela devrait fonctionner dans tous les cas - que vous soyez au courant ou non. (Dans un widget, il y a de fortes chances que vous soyez pas dans la boucle)

Attention, en dehors de la boucle, cela fonctionnera très bien sur des pages simples ou des publications, mais pourrait ne pas afficher la publication que vous souhaitez sur d'autres types de pages. (page d'accueil, pages de catégorie, ...) Dans ces cas, vous pouvez ajouter une condition pour n'exécuter que votre code sur une page singulière, à l'aide de WordPress ' is_singular function ...

Quoi qu'il en soit, voici une version révisée de votre code:

function filter_query( $query ) {
    if(in_the_loop()) $post_id = get_the_ID();
    else $post_id = get_queried_object_id();
    if($post_id) {
        if(empty($query['post__not_in'])) $query['post__not_in'] = array(); // that way if someone else already has stuff in $query['post__not_in'], we won't override it but append to it...
        $query['post__not_in'][] = $post_id;
    }
    return $query;
}
add_filter('wpc_query', 'filter_query', 1 );

J'espère que cela t'aides!

2
MacPrawn