ดูเหมือนว่า $ โพสต์จะมีให้เฉพาะเมื่อสั่งการบางเวลาเท่านั้น ฉันมีเบ็ด "init" ที่ต้องการดึงข้อมูลบางส่วนจากฐานข้อมูลโดยใช้ $ post-> ID
จนถึงตอนนี้วิธีแก้ปัญหาเดียวของฉันคือการเพิ่มตัวกรองอื่นใน the_content ที่ใช้ $ post เพื่อรับข้อมูลที่ฉันต้องการ น่าเสียดายที่มันสะท้อนกลับมาที่ค่าหน้าจอและล้มเหลวในการกลับไปที่ฟังก์ชั่นที่เรียกว่าตัวกรองเดิม
นี่คือรหัสที่ดึงข้อมูลที่ฉันต้องการ แต่ก้องและล้มเหลวในการคืนค่า:
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
ใครบ้างมีข้อเสนอแนะเกี่ยวกับวิธีการรับสิ่งที่ฉันต้องการและให้มันกลับไปที่ฟังก์ชั่นการโทรสำหรับใช้ในภายหลังในปลั๊กอิน?
แก้ไข: เพื่อให้ชัดเจนยิ่งขึ้นฉันมีตัวกรองทำงานอยู่ที่ init ซึ่งต้องสามารถดึงข้อมูลในโพสต์ปัจจุบันจากฐานข้อมูลได้ ในการดำเนินการนี้ต้องมีการเข้าถึง $ post-> ID แต่มันเป็นไปไม่ได้ภายใน init ดังนั้นฉันจะได้ผลลัพธ์ที่ต้องการได้อย่างไร
ขอบคุณ
โจนาธาน
การแก้ไข:
กลายเป็นคำตอบก็แค่ใช้ url_to_postid เช่นนี้:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
ทำงานได้อย่างสมบูรณ์แบบแม้กระทั่งจาก init
init
เร็วเกินไปglobal $post;
ที่จะอยู่ในขอบเขต บางทีถ้าคุณอธิบายสิ่งที่คุณพยายามทำสำเร็จจะช่วยได้ดีกว่า