web-dev-qa-db-fra.com

$ post-> ID affiche un mauvais identifiant

Celui-ci est assez étrange.

Ce code:

$post->ID

Affiche le bon ID à chaque fois, sauf la page de blog (la page définie comme blog sur /wp-admin/options-reading.php).

Sur cette page, $ post-> ID renvoie l'ID du premier article de blog pour une page donnée.

Maintenant, la partie la plus délicate, j'ai essayé de supprimer toutes les boucles de toutes mes pages, le fichier loop.php totalement effacé, désactivé tous les widgets susceptibles d'affecter $ post et il renvoie toujours le mauvais ID.

Des allusions?

Mon index.php est assez standard:

<?php get_header();?> 

    <?php get_template_part( 'loop', 'index' ); ?>

<?php get_footer(); ?>

Et le loop.php est:

<?php while ( have_posts() ) : the_post(); ?>
 contents
<?php endwhile; ?>

Peut-être que le problème est que j'essaie d'obtenir l'ID dans header.php?

Et oui, wp_reset_postdata() ne semble pas aider aussi: /

2
Wordpressor

Sur cette page, $ post-> ID renvoie l'ID du premier article de blog pour une page donnée.

Voilà comment cela fonctionne. $post est défini sur le premier message de la boucle. Sur des publications et des pages uniques identiques à la publication ou à la page. Sur les pages d'archives, il s'agit du premier article du jeu de résultats. Et si vous y réfléchissez, les deux sont vraiment la même chose. Les articles et les pages uniques n'ont qu'un résultat dans l'ensemble qui correspond à l'article ou à la page que vous attendez.

Maintenant, la partie la plus délicate, j'ai essayé de supprimer toutes les boucles de toutes mes pages, le fichier loop.php totalement effacé, désactivé tous les widgets susceptibles d'affecter $ post et il renvoie toujours le mauvais ID.

La requête principale s'exécute avant le chargement de votre modèle et $post est défini dans ce processus. Supprimer des éléments du modèle ne changera rien à cela.

Des allusions?

Oui. Ne comptez pas sur $post sauf dans une boucle appropriée. Si vous avez besoin d’informations sur la page elle-même, utilisez:

$pobj = get_queried_object();
var_dump($pobj); // debugging

Référence:

http://codex.wordpress.org/Function_Reference/get_queried_object

10
s_ha_dum