พารามิเตอร์“ meta_input” ใน wp_insert_post () ใช้ทำอะไร


10

ฉันกำลังแทรกโพสต์ลงใน WordPress ใช้ฟังก์ชันwp_insert_post ()

ฉันต้องการแทรกบางฟิลด์ที่กำหนดเองในแต่ละโพสต์และอ่านเอกสารฉันแม้ว่าพารามิเตอร์ meta_info ถูกใช้สำหรับสิ่งนั้นฉันลองดังนี้:

$data = array(
        'post_author' => 1,
        'post_status' => 'publish',
        'post_title' => $post->getTitle(),
        'post_content' => $post->getContent(),
        'post_category' => $post->getCategory(),
        'tags_input' => $post->getTags(),
        'meta_input' => array( "_test" => "testx1" )
);

$postID = wp_insert_post( $data );

โพสต์ได้รับการแทรกอย่างถูกต้องและแท็กด้วย แต่ไม่มีการเพิ่มฟิลด์ที่กำหนดเอง ฉันรู้ว่าฉันสามารถใช้add_post_meta ()เพื่อเพิ่มได้ แต่ฉันยังต้องการทราบว่าใช้พารามิเตอร์meta_inputเพราะฉันค้นหาในฐานข้อมูลสำหรับ "testx1" หลังจากแทรกโพสต์และไม่พบผลลัพธ์ใด ๆ

คำตอบ:


7

ส่วนนี้ของwp_insert_posts()ให้มันไป:

  if ( ! empty( $postarr['meta_input'] ) ) {
        foreach ( $postarr['meta_input'] as $field => $value ) {
            update_post_meta( $post_ID, $field, $value );
        }
  } 

ที่ซึ่งเราจะเห็นว่ามีการปรับปรุง / เพิ่มเขตข้อมูลโพสต์เมตาupdate_post_meta()อย่างไร

นี่คือคำอธิบายแบบอินไลน์สำหรับmeta_input:

อาร์เรย์ของค่าโพสต์เมตาคีย์โดยโพสต์เมตาคีย์ของพวกเขา ค่าเริ่มต้นว่างเปล่า

สิ่งนี้ถูกเพิ่มเข้ามาใน WordPress 4.4 และตั๋วที่เกี่ยวข้อง# 20451สำหรับข้อมูลเพิ่มเติม

โปรดทราบว่าการใช้เครื่องหมายขีดล่างด้านหน้าของคีย์เมตา_testจะซ่อนจากเมตาโบซ์ฟิลด์ที่กำหนดเองในหน้าจอแก้ไขการโพสต์


โอ้การทดสอบ wp im บนคือ 4.3 ขอบคุณมาก
สตรีม

0

วิธีที่ฉันทำคือผ่าน term_id ไม่ทากและทำงานได้:

//insert Art items into database
$arr = array('item 1', 'item 2');
// $arr = array('art item 1', 'art item 2');

foreach ($arr as $a) { 
    wp_insert_post(array(
    //essentials
    //'ID'      => 1131,
    'post_author'       => 1,
    'post_title'        => $a,
    'post_type'         => 'post',
    'post_content'      => 'Something...',
    'post_status'       => 'publish',
    'post_name'         => 'post name',
    'meta_input'        => array( //(array) Array of post meta values keyed by their post meta key. Default empty.
        'city'     => '',// 'name' => $post['name']
        'country'  => ''// 'city' => $post['city']
    ),
    'tax_input'    => array(
        'category' => array(33,32), //id numbers work, slugs tend to be ignored !!!
        'post_tag' => array('one', 'two') //for tags slugs seem to work
    ),//(array) Array of taxonomy terms keyed by their taxonomy name. Default empty. Equivalent to calling wp_set_post_terms() / wp_set_object_terms()
    //'tags_input'  => array('una', 'trei'), //(array) Array of tag names, slugs, or IDs. Default empty. Equivalent to calling wp_set_post_tags().
    ), true);   
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.