วิธีรับ 'post_content' โดยไม่ต้องปอก <p> แท็ก


20

ฉันพยายามดึงเนื้อหาโพสต์ของโพสต์ที่เฉพาะเจาะจง:

$post = get_post(/* id */);
$content = $post->post_content;

อย่างไรก็ตามสิ่งนี้จะดึงเนื้อหาโดยไม่มีการขึ้นบรรทัดใหม่และละเว้น<p>แท็กทั้งหมด

เป็นวิธีที่เหมาะสมในการดึงเนื้อหาโพสต์โดยไม่ต้องลอก<p>แท็ก (ตามที่ปรากฏในหน้าโพสต์หรือแท็บ " ข้อความ " แก้ไขโพสต์) คืออะไร?

คำตอบ:


30

คำตอบทั้งสองนั้นถูกต้อง แต่คำตอบที่ละเอียดยิ่งกว่านั้นดูเหมือนจะรับประกัน

หากคุณใช้สิ่งนี้:

$content = wpautop( $post->post_content );

คุณกำลังใช้ฟังก์ชั่นเดียวที่เพิ่มแท็กวรรคเพื่อโพสต์เนื้อหา wpautop()เป็นหนึ่งในหลาย ๆ ฟังก์ชั่น (รวมถึงฟังก์ชั่นปลั๊กอินในบางครั้ง) ที่เชื่อมต่อthe_contentดังนั้นหากคุณทำสิ่งนี้:

$content = apply_filters('the_content', $post->post_content);

คุณได้รับเนื้อหาโพสต์เรียกใช้ผ่านตัวกรองใด ๆthe_contentซึ่งรวมถึงwpautop()โดยค่าเริ่มต้น

ในที่สุดหากคุณอยู่ในวงคุณสามารถทำสิ่งนี้:

$content = apply_filters( 'the_content', get_the_content() );

ซึ่งเป็นตัวห่อหุ้มสำหรับตัวอย่างโค้ดที่สอง แต่แน่นอนว่ามันดูดีกว่านิดหน่อย ปรับปรุง 1 กันยายน 2018: ฉบับปรับปรุงใหม่บนพื้นฐานของความคิดเห็น Props @timmb

โดยทั่วไปฉันจะบอกว่า "วิธีที่ถูกต้อง" ที่ต้องการในการทำเช่นนี้คือตั้งแต่ต้นจนจบตั้งแต่การใช้ฟังก์ชั่นคอร์ WP ควรเปิดใช้งานความเข้ากันได้ย้อนหลังมากขึ้น (ในทางทฤษฎีอย่างน้อย) การตัดสินใจอื่นเท่านั้นที่จะทำคือคุณต้องการอนุญาตให้ WordPress และปลั๊กอินแก้ไขเนื้อหาโพสต์ด้วยหรือไม่ หากเป็นกรณีนี้ให้ใช้ตัวเลือกที่ 2 หรือ 3 อย่างแน่นอน


1
ฉันคิดว่าทางออกสุดท้ายนี้ไม่ถูกต้อง จากcodex.wordpress.org/Function_Reference/get_the_content : "ความแตกต่างที่สำคัญจาก the_content () คือ get_the_content () ไม่ส่งเนื้อหาผ่านตัวกรอง 'the_content'" สิ่งนี้จะไม่แนะนำวิธีการที่ถูกต้อง$content = apply_filters('the_content', get_the_content);หรือไม่
ทิม MB


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.