Parece que $ post está disponível apenas para ganchos em execução em determinados horários. Eu tenho um gancho "init" que precisa extrair alguns dados do banco de dados usando o $ post-> ID.
Até agora, minha única solução alternativa foi adicionar outro filtro no the_content, que usa $ post para obter as informações necessárias. Infelizmente, ele também ecoa o valor de retorno para a tela e falha em devolvê-lo à função que chamou o filtro originalmente.
Aqui está o código que extrai os dados que eu preciso, mas ecoa e falha ao retornar o valor:
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
Alguém tem alguma sugestão sobre como obter o que eu preciso e que ele passe de volta para a função de chamada para uso posterior no plugin?
Edição: possivelmente para tornar isso mais claro, eu tenho um filtro em execução no init, que precisa ser capaz de recuperar informações no post atual do banco de dados. Para fazer isso, requer acesso a $ post-> ID. Mas isso não é possível no init, então como posso obter o resultado necessário?
Obrigado,
Jonathan
RESOLVIDO:
Acontece que a resposta foi simplesmente usar url_to_postid assim:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
Funciona perfeitamente, mesmo a partir do init.
init
é muito cedo paraglobal $post;
estar no escopo. talvez se você descrever o que está tentando realizar, ajudará melhor.