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.Respostas:
Acontece que a resposta foi simplesmente usar
url_to_postid
assim:Funciona perfeitamente mesmo a partir de
init
.fonte
Isso também funciona no WordPress 4.7:
fonte
Ocorreu um problema ao usar a resposta aceita, pois não funciona com portas e portas multisite . Aqui está uma solução que deve funcionar em todos os casos:
fonte