74 votes

Wordpress Obtenir l'ID de la Page en dehors de la boucle

Je veux obtenir l'ID de la page avant de commencer la boucle de Wordpress. Je suis à l'aide de

$page = get_query_var('page_id');

Apparemment, elle ne retourne rien.

Je veux juste vérifier une page pour son ID et ajouter une classe à l' <body> balise basée sur elle.

154voto

TheDeadMedic Points 6943

Si vous utilisez assez de permaliens, get_query_var('page_id') ne fonctionne pas.

Au lieu de cela, obtenir la liste ID de l'objet à partir de la global $wp_query:

// Since 3.1 - recommended!
$page_object = get_queried_object();
$page_id     = get_queried_object_id();


// "Dirty" pre 3.1
global $wp_query;

$page_object = $wp_query->get_queried_object();
$page_id     = $wp_query->get_queried_object_id();

9voto

nk-47 Points 1369

Vous pouvez également créer une fonction générique pour récupère l'ID de la poste, que ce soit à l'extérieur ou à l'intérieur de la boucle (gère les deux cas):

<?php

/**
 * @uses WP_Query
 * @uses get_queried_object()
 * @extends get_the_ID()
 * @see get_the_ID()
 * @return int
 */
function get_the_ID() {
  if (in_the_loop()) {
       $post_id = get_the_ID();
  } else {
       global $wp_query;
       $post_id = $wp_query->get_queried_object_id();
         }
  return $post_id;
} ?>

Et il suffit de faire:

$page_id = get_the_ID();

7voto

ryscript Points 45

utiliser ce lieu

global $post; echo $post->ID;

4voto

banesto Points 724

Si vous par tous les moyens cherché ce sujet à cause de la poste page (page d'index alternative lors de l'utilisation de page d'accueil statique), puis la bonne réponse est celle-ci:

if (get_option('show_on_front') == 'page') {
    $page_id = get_option('page_for_posts');
    echo get_the_title($page_id);
}

(prises de Forrst | Echo WordPress "Messages" Page de titre du code de tammyhart)

0voto

nikc.org Points 7275

Vous pouvez utiliser is_page($page_id) à l'extérieur de la boucle pour vérifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X