Pentru ce este folosit parametrul "meta_input" în wp_insert_post()?

30 ian. 2016, 15:49:44
Vizualizări: 13.7K
Voturi: 10

Introduc unele postări în WordPress folosind funcția wp_insert_post().

Doresc să adaug câteva câmpuri personalizate pentru fiecare postare și citind documentația am crezut că parametrul meta_info este folosit pentru asta, am încercat ceva de genul:

$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 );

Postarea este introdusă corect și etichetele de asemenea. Dar nu sunt adăugate câmpuri personalizate. Știu că aș putea folosi add_post_meta() pentru a le adăuga, dar totuși aș dori să aflu la ce este folosit parametrul meta_input, deoarece am căutat în baza de date după "testx1" după inserarea postării și nu am găsit niciun rezultat.

0
Toate răspunsurile la întrebare 2
1

Această parte din wp_insert_posts() o dezvăluie:

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

unde vedem cum sunt actualizate/adaugate câmpurile meta ale postării cu update_post_meta().

Iată descrierea inline pentru meta_input:

Array de valori meta pentru postare, indexate după cheia lor meta. Implicit gol.

Această funcționalitate a fost adăugată în WordPress 4.4 și aici este tichetul relevant #20451 pentru mai multe informații.

Rețineți că folosirea underscore-ului în fața cheii meta _test o va ascunde din metabox-ul câmpuri personalizate din ecranul de editare al postării.

30 ian. 2016 16:02:38
Comentarii

Ohh, wp-ul pe care îl testez este 4.3, mulțumesc mult.

streel streel
30 ian. 2016 16:15:43
0

Modul în care o fac este prin term_id și nu prin slug și funcționează:

//inserează elemente Art în baza de date
$arr = array('item 1', 'item 2');
// $arr = array('art item 1', 'art item 2');

foreach ($arr as $a) { 
    wp_insert_post(array(
    //elemente esențiale
    //'ID'      => 1131,
    'post_author'       => 1,
    'post_title'        => $a,
    'post_type'         => 'post',
    'post_content'      => 'Ceva...',
    'post_status'       => 'publish',
    'post_name'         => 'nume post',
    'meta_input'        => array( //(array) Array de valori meta pentru post, indexate după cheia meta. Implicit gol.
        'city'     => '',// 'name' => $post['name']
        'country'  => ''// 'city' => $post['city']
    ),
    'tax_input'    => array(
        'category' => array(33,32), //numerele ID funcționează, slug-urile tind să fie ignorate !!!
        'post_tag' => array('one', 'two') //pentru tag-uri, slug-urile par să funcționeze
    ),//(array) Array de termeni de taxonomie indexați după numele taxonomiei. Implicit gol. Echivalent cu apelarea wp_set_post_terms() / wp_set_object_terms()
    //'tags_input'  => array('una', 'trei'), //(array) Array de nume de tag-uri, slug-uri sau ID-uri. Implicit gol. Echivalent cu apelarea wp_set_post_tags().
    ), true);   
}
16 ian. 2019 01:55:55