Je veux obtenir l'ID de la page avant de commencer la boucle dans Wordpress. j'utilise
$page = get_query_var('page_id');
Apparemment, ça ne retourne rien.
Je veux juste vérifier l'ID d'une page et ajouter une classe à la balise <body>
en fonction de celle-ci.
Si vous utilisez de jolis permaliens, get_query_var('page_id')
ne fonctionnera pas.
Obtenez plutôt l'ID d'objet demandé depuis le :$wp_query
global
// 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();
Vous pouvez également créer une fonction générique pour obtenir l'ID de la publication, 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()
* @see get_the_ID()
* @return int
*/
function get_the_post_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 simplement faire:
$page_id = get_the_post_id();
Utilisez ce $ post global à la place:
global $post;
echo $post->ID;
Si, par quelque moyen que ce soit, vous avez cherché ce sujet à cause de la page de publication (alternative à la page d'index lors de l'utilisation de la page de garde statique), la bonne réponse est alors
if (get_option('show_on_front') == 'page') {
$page_id = get_option('page_for_posts');
echo get_the_title($page_id);
}
(extrait de Forrst | Echo WordPress "Posts Page" title - Du code provenant de tammyhart )
Si vous êtes sur une page et que cela ne fonctionne pas:
$page_object = get_queried_object();
$page_id = get_queried_object_id();
vous pouvez essayer de construire le permalien manuellement avec PHP afin de pouvoir rechercher l'ID de l'article:
// get or make permalink
$url = !empty(get_the_permalink()) ? get_the_permalink() : (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]";
$permalink = strtok($url, '?');
// get post_id using url/permalink
$post_id = url_to_postid($url);
// want the post or postmeta? use get_post() or get_post_meta()
$post = get_post($post_id);
$postmeta = get_post_meta($post_id);
Il se peut qu'il ne saisisse pas tous les liens permanents possibles (surtout depuis que je supprime la chaîne de requête), mais vous pouvez le modifier pour l'adapter à votre cas d'utilisation.
Utilisez ci-dessous deux lignes de code pour obtenir la page en cours ou l'identifiant de publication
global $post;
echo $post->ID;
Vous pouvez utiliser is_page($page_id)
en dehors de la boucle pour vérifier.
Cette fonction récupère l'identifiant d'une page en cours.
get_the_ID();