Tampaknya $ post hanya tersedia untuk kait yang dieksekusi pada waktu-waktu tertentu. Saya memiliki hook "init" yang perlu menarik beberapa data dari database menggunakan $ post-> ID.
Sejauh ini satu-satunya solusi saya adalah menambahkan filter pada the_content, yang menggunakan $ post untuk mendapatkan informasi yang saya butuhkan. Sayangnya, ini juga menggemakan nilai kembali ke layar, dan gagal mengembalikannya ke fungsi yang awalnya disebut filter.
Berikut adalah kode yang mengekstrak data yang saya butuhkan, tetapi menggemakan dan gagal mengembalikan nilainya:
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
Adakah yang punya saran tentang cara mendapatkan apa yang saya butuhkan dan mengembalikannya ke fungsi panggilan untuk digunakan nanti dalam plugin?
EDIT: Agar lebih jelas, saya memiliki filter yang berjalan di init, yang harus dapat mengambil informasi tentang posting saat ini dari DB. Untuk melakukan ini, diperlukan akses ke $ post-> ID. Tetapi itu tidak mungkin dalam init, jadi bagaimana saya bisa mendapatkan hasil yang saya butuhkan?
Terima kasih,
Jonathan
TERPECAHKAN:
Ternyata jawabannya hanya menggunakan url_to_postid seperti ini:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
Bekerja dengan sempurna bahkan dari init.
init
terlalu dini untukglobal $post;
berada dalam ruang lingkup. mungkin jika Anda menggambarkan apa yang Anda coba capai akan membantu lebih baik.