การกำหนดแบบสอบถาม WP และแบบสอบถามเมตาที่ถูกต้อง

ฉันมีรายการประเภทโพสต์ที่กำหนดเอง และฉันกำลังพยายามใช้แบบฟอร์มการค้นหาทับมัน แบบฟอร์มการค้นหาจะพุชข้อความค้นหา URL ที่จะอยู่ในหน้าเดียวกัน และขึ้นอยู่กับข้อความค้นหาเหล่านี้ (เช่น name="..", order=".." ฯลฯ) รายการประเภทโพสต์ที่กำหนดเองจะแสดงแทน ลักษณะเหล่านี้

ฉันติดอยู่กับการใช้อาร์กิวเมนต์สำหรับ WP_Query เป็นพิเศษซึ่งจะทำให้ฉันสามารถค้นหาข้อมูลเมตาสำหรับโพสต์ที่กำหนดเองแต่ละประเภทได้ นี่คือโครงสร้างของสตริง $args ของฉัน (ตามที่เรียกโดย print_r - สิ่งนี้จะไม่แสดงไวยากรณ์ที่แน่นอนที่ฉันเคยใช้ เนื่องจากมีการผสมผสานกับตรรกะค่อนข้างน้อย แต่สิ่งนี้ทำให้มีความคิดที่ดีว่าข้อโต้แย้งของฉันถูกตีความอย่างไร):

[post_type] => obituary
[post_per_page] => 25
[meta_query] => Array
    (
        [relation] => OR
        [0] => Array
            (
                [meta_key] => last_name
                [meta_value] => Green
            )

        [1] => Array
            (
                [meta_key] => first_name
                [meta_value] => Green
            )

    )

ถ้าฉันลบคีย์อาร์เรย์ [meta_query] [0] (ดังนั้นอาร์เรย์ที่กำหนดค่าให้มีลักษณะเป็นนามสกุล (ดังนั้นจึงดูภายใต้คีย์ข้อมูลเมตาเดียวเท่านั้น) แบบสอบถามก็จะใช้งานได้ดี ฉันคิดว่าจะเพิ่มคีย์ความสัมพันธ์และค่าหรือ เพื่อให้สามารถค้นหา meta_value นั้นเป็นคีย์ meta_name หรือ first_name อย่างไรก็ตาม ดูเหมือนว่าจะใช้งานไม่ได้ แบบสอบถามยังคงส่งคืนรายการประเภทโพสต์ที่กำหนดเองทั้งหมด

เนื่องจากฉันยังใหม่กับสิ่งนี้ มีอะไรที่ชัดเจนที่ฉันขาดหายไปหรือไม่? ฉันได้ดูเอกสารต่างๆ ที่พบแล้ว และนี่น่าจะใช้ได้

คุณคิดยังไง?

แก้ไข: การแก้ไขข้างต้น: การค้นหาภายใต้ meta_key เดียวเท่านั้นจะใช้งานได้ก็ต่อเมื่อมีการกำหนดไว้ภายนอก meta_query


person Prusprus    schedule 09.11.2011    source แหล่งที่มา


คำตอบ (1)


คิดออกแล้ว โครงสร้างที่ถูกต้องมีดังนี้:

(
    [post_type] => obituary
    [post_per_page] => 25
    [meta_query] => Array
        (
            [relation] => OR
            [0] => Array
                (
                    [key] => last_name
                    [value] => Green
                    [compare] => LIKE
                )

            [1] => Array
                (
                    [mkey] => first_name
                    [value] => Green
                    [compare] => LIKE
                )

        )

)

ข้อแตกต่างที่สำคัญคือ meta_key และ meta_value เรียกว่าคีย์และค่าเมื่ออยู่ภายในอาร์เรย์ meta_query

person Prusprus    schedule 09.11.2011