wp_insert_post() sau similar pentru tipuri de postări personalizate

18 iul. 2013, 14:09:06
Vizualizări: 80.5K
Voturi: 8

Am nevoie să inserez obiecte de tip custom post type din cod. Nu am reușit să le adaug folosind metoda implicită

$id = wp_insert_post(array('post_title'=>'random', 'post_type'=>'custom_post'));

creează o postare obișnuită în loc.

3
Comentarii

Ai înregistrat un custom post type numit custom_post înainte de a folosi acest apel?

Rohit Pande Rohit Pande
18 iul. 2013 14:32:44

da, este înregistrat

rashid rashid
18 iul. 2013 14:56:08

nu contează, funcționează, era o mică eroare în fișier, acest fragment exact este corect. doar înlocuiește 'custom_post' cu tipul de postare pe care îl dorești!

rashid rashid
18 iul. 2013 15:02:55
Toate răspunsurile la întrebare 5
2
20

Acest lucru poate fi realizat folosind următorul cod :-

Pentru a introduce un articol nou pentru un tip personalizat

$post_id = wp_insert_post(array (
   'post_type' => 'your_post_type',
   'post_title' => $your_title,
   'post_content' => $your_content,
   'post_status' => 'publish',
   'comment_status' => 'closed',   // dacă preferați
   'ping_status' => 'closed',      // dacă preferați
));

După inserarea articolului, funcția de mai sus va returna un ID de articol. Acum, dacă doriți să introduceți orice informație meta pentru acest articol, puteți utiliza următorul fragment de cod.

if ($post_id) {
   // inserează metadatele articolului
   add_post_meta($post_id, '_your_custom_1', $custom1);
   add_post_meta($post_id, '_your_custom_2', $custom2);
   add_post_meta($post_id, '_your_custom_3', $custom3);
}
24 iun. 2014 09:03:13
Comentarii

Parametrul 'meta_input' poate fi utilizat în array-ul 'wp_insert_post' pentru a adăuga câmpuri meta, în loc să folosești 'add_post_meta' ulterior.

AncientRo AncientRo
10 mar. 2019 16:14:59

Mulțumesc pentru postare. @AncientRow, poți oferi un exemplu care include meta_input?

Pegues Pegues
22 apr. 2020 20:39:22
0
18

Din Codex:

wp_insert_post() va completa o listă implicită cu acestea, dar utilizatorul trebuie să furnizeze titlul și conținutul, altfel scrierea în baza de date va eșua.

$id = wp_insert_post(array(
  'post_title'=>'aleatoriu', 
  'post_type'=>'custom_post', 
  'post_content'=>'text demonstrativ'
));
18 iul. 2013 15:21:05
0

Acest exemplu a funcționat pentru mine folosind meta_input

$post_id = wp_insert_post(array (
   'post_type' => 'your_post_type',
   'post_title' => $your_title,
   'post_content' => $your_content,
   'post_status' => 'publish',
   'comment_status' => 'closed', 
   'ping_status' => 'closed',
   'meta_input' => array(
      '_your_custom_1' => $custom_1,
      '_your_custom_2' => $custom_2,
      '_your_custom_3' => $custom_3,
    ),
));
17 oct. 2021 01:15:09
1

Am descoperit că folosirea funcției isset() îmi permite să utilizez wp_insert_post() pentru postări personalizate:

if ( !isset( $id ) ) { 
    $id = wp_insert_post( $new, true ); 
}
10 mar. 2015 22:00:54
Comentarii

Pentru a formata corect codul în răspunsul (sau întrebarea) ta, evidențiază-l și apasă pe {} deasupra casetei de editare.

Gabriel Gabriel
10 mar. 2015 22:38:51
0

Am avut aceeași problemă. Am încercat fiecare soluție oferită pe majoritatea forumurilor. Dar soluția care a funcționat pentru mine a fost verificarea lungimii tipului de postare (post_type). Lungimea post_type este limitată la 20 de caractere. Deci, dacă cineva întâmpină o problemă similară, încercați acest lucru dacă nimic altceva nu a funcționat.

15 iun. 2021 17:23:03