web-dev-qa-db-fra.com

Comment obtenir un identifiant de publication avec la fonction Ajouter un filtre

J'écris un plugin et j'essaie de comprendre comment ajouter des données à la fin d'un article en fonction de méta-informations personnalisées.

Donc j'ai fait ça jusqu'à présent:

add_filter('the_content', 'AppendMeta');

Et voici la fonction "AppendMeta"

AppendMeta($content) {
    echo $content; // Echo out post content
    $PersonName = get_post_meta($post->ID, 'PersonName', true);
    echo 'Person: ' . $PersonName;
}

Ce code fonctionne si je remplace $ post-> ID par l'id de la publication, mais j'ai besoin que cela fonctionne en fonction de la publication actuellement parcourue par l'utilisateur. Comment pourrais-je passer l'identifiant de la publication en tant que paramètre? $ post-> ID ne fonctionne pas dans ce scénario et je ne peux pas savoir pourquoi.

3
Talon

Peu importe, j'ai découvert que je peux utiliser get_the_ID();.

Cette fonction renverra l'identifiant de publication à l'intérieur du filtre the_content. La fonction déclare simplement l'objet global $post et renvoie son ID.

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    echo $content; // Echo out post content
    $PersonName = get_post_meta(get_the_ID(), 'PersonName', true);
    echo 'Person: ' . $PersonName;
}

Si vous ne souhaitez pas utiliser get_the_ID(), vous devez simplement déclarer l'objet $post global avant de l'utiliser:

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    global $post;
    echo $content; // Echo out post content
    $PersonName = get_post_meta($post->ID), 'PersonName', true);
    echo 'Person: ' . $PersonName;
}
8
Talon

the_ID() est seulement censé être utilisé à l'intérieur de la boucle, sinon vous ne pouvez pas compter dessus. Mieux vaut utiliser l'objet $GLOBALS['post'] dans votre appel de fonction.

4
Ashfame