web-dev-qa-db-fra.com

Comment obtenir l'identifiant actuel d'un type de message personnalisé dans une boucle en utilisant un modèle singel- {type personnalisé} .php?

J'ai un modèle de type de message personnalisé où suis en boucle à travers tous les messages. Ce que j'essaie, c'est quand je vais sur ma page de publication personnalisée, je veux obtenir l'identifiant de publication actuel dans la boucle.

J'ai donc essayé de vérifier si le permalien est le même pour le post dans la boucle, si c'est le même, je vais obtenir l'identifiant du post actuel dans la boucle.

Voici le code que j'ai essayé

D'abord essayer d'obtenir le permalien à l'extérieur pour le vérifier à l'intérieur de la boucle

$permalink = get_permalink();

Maintenant, je reçois le post actuel permalink maintenant je veux obtenir l'identifiant du post actuel

if($query->have_posts()) : 
    while ($query->have_posts()) : $query->the_post();
        if(the_permalink()==$permalink){
            echo get_the_ID();
        }else{
            echo "not found";
        }
    endwhile;
    wp_reset_postdata();
endif;

J'ai essayé ces choses dans single-{custom-post-name}.php suis d'obtenir not found. Quelqu'un peut-il me donner un moyen d'obtenir l'identifiant de l'article actuel dans ce modèle?

2
sun

Vous avez donc deux boucles: la boucle principale et la seconde utilisant $query.

Vous voulez comparer si, à un moment quelconque de votre seconde boucle, il y a une correspondance entre la publication actuelle (à l'intérieur de la boucle) et la publication traitée dans la boucle $query.

Ai-je raison ?

Au lieu de vérifier les permaliens, je proposerais de vérifier les identifiants.

Ainsi, lors de la première boucle, vous créez une variable avec l'identifiant de publication actuel:

$current_post_id = $post->ID;

et dans votre deuxième boucle, vous comparez simplement:

if($query->have_posts()) : while ($query->have_posts()) : $query->the_post();

    if( $current_post_id === $post->ID ) {
         echo $post->ID; 
    } else {
        echo "not found";
    }

endwhile; wp_reset_postdata(); endif;

Pas sûr que ce soit ce que vous cherchez, faites le nous savoir.

PS: je devrais ajouter un nom plus spécifique pour votre requête, juste pour éviter une collision de noms depuis un plugin ou autre, comme $my_prefix_query

3
Simon