web-dev-qa-db-fra.com

Obtenez le bon identifiant pour tous les posts et toutes les pages dans header.php

Je veux obtenir le post/ID actuel en dehors de la boucle (dans header.php) et utiliser cet identifiant pour le plug-in Advanced Custom Fields pour obtenir les champs.

Mais je ne peux pas obtenir le bon identifiant de la page d'accueil, de la page d'archive (balise, auteur, catégorie, etc.).

Voici le code

if ( is_singular( 'post' ) ) {
  $post_id = $wp_query->post->ID;
  echo 'post id' . $post_id;
} elseif ( is_shop() ) {
  $post_id = get_option( 'woocommerce_shop_page_id' );
  echo 'post id' . $post_id;
} else {
  $post_id = get_queried_object_id();
  echo 'post id' . $post_id
}

Une autre question, une meilleure méthode pour obtenir l'identifiant pour toute la page en dehors de la boucle? Je crains juste que mon code manque encore une partie du type de page.

1
jquery

get_queried_object_id() renverra l'ID de la publication ou de la page actuellement affichée, ainsi que la page de couverture statique. Pour tout type de page d'archive ( à l'exception de la date, du type d'article personnalisé et des archives personnelles ), les éléments suivants seront renvoyés:

  • ID de catégorie de l'archive de catégories en cours de visualisation

  • ID de balise de l'archive de balises en cours de visualisation

  • Identifiant de l'auteur de l'archive actuelle de l'auteur

  • ID de terme pour la page de terme en cours affichée

Si ce n'est pas le cas dans votre cas, vous, votre thème ou le plug-in que vous utilisez utilisez probablement query_posts quelque part. query_posts coupe l'objet de requête principal et réinitialise l'objet de requête principal en requête personnalisée à l'aide de query_posts. C'est pourquoi vous devriez jamais jamais ue query_posts

3
Pieter Goosen