Como obter um ID de postagem com a função Adicionar filtro

2

Estou escrevendo um plug-in e estou tentando descobrir como adicionar dados ao final de uma postagem com base em algumas informações personalizadas do Meta.

Então, eu fiz isso até agora:

add_filter('the_content', 'AppendMeta');

E aqui está a função "AppendMeta"

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

Esse código funciona se eu substituir o ID $ post- > pelo ID da postagem, mas preciso que ele funcione com base na postagem na qual o usuário está navegando no momento. Como eu passaria o ID do post como parâmetro? $ post- > ID não funciona neste cenário e não consigo descobrir o porquê.

    
por Talon 05.05.2012 / 08:26

2 respostas

7

Não importa, descobri que posso usar get_the_ID(); .

Esta função retornará o ID da postagem dentro do filtro the_content . A função simplesmente declara o objeto global $post e retorna seu 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;
}

Se você não quiser usar get_the_ID() , basta declarar o objeto $post global antes de usá-lo:

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;
}
    
por Talon 05.05.2012 / 08:28
4

the_ID() só deve ser usado dentro do loop, senão você não pode confiar nele. É melhor usar o objeto $GLOBALS['post'] dentro de sua chamada de função.

    
por Ashfame 05.05.2012 / 08:59