Récupérer l’ID d’un post ou d’une page sous WordPress

Vous utilisez peut-être WordPress pour publier votre blog.

Vous avez commencé à modifier un thème pour l’adapter à vos besoins/goûts/envies mais une variable vous résiste : la variable qui permet d’afficher un post grâce à un numéro unique l’identifiant (ID).

Par défaut, cet identifiant est disponible uniquement à l’intérieur de la boucle (The Loop) de WordPress :

/* on affiche le numéro de post/page dans la boucle WordPress */
the_ID();

Tant que vous vous trouvez dans la boucle, aucun souci.

Par contre, si vous souhaitez écrire votre propre plugin ou utiliser cette variable dans votre sidebar, vous êtes un peu coincé car the_ID() n’est alors plus une fonction valide.

Pour remédier à ce problème, vous pouvez utiliser la variable $post->ID afin de retourner le numéro du post ou de la page.

Jettez un oeil au code suivant :

/* on fait de $post une variable globale */
global $post;

/* on stocke la variable dans un nom de variable inutilisé */
$sky_post_ID = $post->ID;

/* on affiche cette variable */
echo $sky_post_ID;

Alternative, en effectuant une requête SQL simplifiée par $wp_query.

Cette méthode est utilisée principalement hors de la boucle, en travaillant directement sur la base de données :

/* on fait de $wp_query une variable globale */
global $wp_query;

/* on stocke la variable dans un nom de variable inutilisé */
$sky_post_ID = $wp_query->post->ID;

/* on echo cette variable */
echo $sky_post_ID;

Voilà, vous devriez maintenant pouvoir accéder à ces fameux post id et page id.

Happy coding :)

Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.

Explorons les possibilités ensemble »

Articles conseillés :

6 pensées sur “Récupérer l’ID d’un post ou d’une page sous WordPress”

  1. Bonjour! Merci pour cet article.

    Cependant, sais-tu comment récupérer l’ID d’une catégorie en dehors de la Boucle, avec $wp_query? (et aussi l’ID des pages, tant qu’on y est :-D)

    Je cherche une solution depuis des jours sans succès… D’avance merci pour ton aide!

    Reply
  2. Salut kReEsTaL,

    Voici comment récupérer l’ID d’une catégorie :

    
    /* Pour récupérer l'ID de la catégorie d'un post ; */
    $category = get_the_category(); 
    echo $category[0]->cat_ID;

    Le problème avec ce premier bout de code est que l’on récupère uniquement l’ID de la première catégorie d’un post.

    Si l’article est classé dans plusieurs catégories, il faut créer une boucle :

    /* Pour récupérer toutes les ID de catégories d'un post ; */
    foreach((get_the_category()) as $category) { 
        echo $category->cat_ID; 
    } 

    A titre indicatif, voici les autres variables concernant les catégories :

    cat_ID : ID de catégorie.
    cat_name : nom de la catégorie.
    category_nicename : le slug automatique généré pour la catégorie.
    category_description : la description de la catégorie
    category_parent : l’ID de la catégorie parente. Sera égal à 0 s’il n’y en a pas.
    category_count : le nombre d’occurences de cette catégorie.

    Les pages sont considérées comme des posts : la méthode fonctionne pour les deux.

    Reply
  3. Ah enfin j’essaye de supprimer les pubs qui sont dans une de mes catégories et je ne pouvais pas récupérer son id

    merci beaucoup pour ce code

    Reply

Opinions