Sembra che $ post sia disponibile solo per gli hook che si eseguono in determinati momenti. Ho un hook "init" che deve estrarre alcuni dati dal database usando $ post-> ID.
Finora la mia unica soluzione è stata quella di aggiungere un altro filtro su the_content, che utilizza $ post per ottenere le informazioni di cui ho bisogno. Sfortunatamente, riecheggia anche il valore restituito sullo schermo e non riesce a restituirlo effettivamente alla funzione che ha originariamente chiamato il filtro.
Ecco il codice che estrae i dati di cui ho bisogno, ma riecheggia e non restituisce il valore:
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
Qualcuno ha qualche suggerimento su come ottenere ciò di cui ho bisogno e farlo tornare alla funzione di chiamata per un uso successivo nel plugin?
EDIT: Per rendere più chiaro questo, ho un filtro in esecuzione su init, che deve essere in grado di recuperare le informazioni sul post corrente dal DB. Per fare ciò, richiede l'accesso a $ post-> ID. Ma ciò non è possibile all'interno di init, quindi come posso ottenere il risultato di cui ho bisogno?
Grazie,
Jonathan
Risolto:
Si scopre che la risposta era semplicemente usare url_to_postid in questo modo:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
Funziona perfettamente anche da init.
init
è troppo presto perglobal $post;
essere compreso nell'ambito. forse se descrivi ciò che stai cercando di realizzare ti aiuterà meglio.