A cosa serve il parametro "meta_input" in wp_insert_post()?

30 gen 2016, 15:49:44
Visualizzazioni: 13.7K
Voti: 10

Sto inserendo alcuni post in WordPress utilizzando la funzione wp_insert_post().

Voglio aggiungere alcuni campi personalizzati a ciascun post e leggendo la documentazione ho pensato che il parametro meta_info fosse utilizzato per questo scopo. Ho provato qualcosa del genere:

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

Il post viene inserito correttamente e anche i tag. Ma non vengono aggiunti campi personalizzati. So che potrei usare add_post_meta() per aggiungerli ma vorrei comunque sapere a cosa serve il parametro meta_input, perché ho cercato "testx1" nel database dopo aver inserito il post e non ho trovato alcun risultato.

0
Tutte le risposte alla domanda 2
1

Questa parte di wp_insert_posts() lo rivela:

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

dove vediamo come i campi meta dei post vengono aggiornati/aggiunti con update_post_meta().

Ecco la descrizione inline per meta_input:

Array di valori meta dei post indicizzati per la loro chiave meta. Predefinito vuoto.

Questa funzionalità è stata aggiunta in WordPress 4.4 e qui trovi il ticket rilevante #20451 per maggiori informazioni.

Nota che usando l'underscore davanti alla chiave meta, come _test, questa verrà nascosta dal metabox campi personalizzati nella schermata di modifica del post.

30 gen 2016 16:02:38
Commenti

Ohh, la versione di wp che sto testando è la 4.3, grazie mille.

streel streel
30 gen 2016 16:15:43
0

Il modo in cui lo faccio è tramite term_id e non slug e funziona:

//inserisce gli elementi Art nel database
$arr = array('item 1', 'item 2');
// $arr = array('art item 1', 'art item 2');

foreach ($arr as $a) { 
    wp_insert_post(array(
    //essenziali
    //'ID'      => 1131,
    'post_author'       => 1,
    'post_title'        => $a,
    'post_type'         => 'post',
    'post_content'      => 'Qualcosa...',
    'post_status'       => 'publish',
    'post_name'         => 'nome del post',
    'meta_input'        => array( //(array) Array di valori meta del post indicizzati per chiave meta. Default vuoto.
        'city'     => '',// 'nome' => $post['nome']
        'country'  => ''// 'città' => $post['città']
    ),
    'tax_input'    => array(
        'category' => array(33,32), //i numeri ID funzionano, gli slug tendono ad essere ignorati !!!
        'post_tag' => array('uno', 'due') //per i tag gli slug sembrano funzionare
    ),//(array) Array di termini tassonomici indicizzati per nome tassonomia. Default vuoto. Equivalente a chiamare wp_set_post_terms() / wp_set_object_terms()
    //'tags_input'  => array('una', 'tre'), //(array) Array di nomi, slug o ID dei tag. Default vuoto. Equivalente a chiamare wp_set_post_tags().
    ), true);   
}
16 gen 2019 01:55:55