post_status => publish nu funcționează

18 dec. 2013, 06:57:34
Vizualizări: 36.9K
Voturi: 3

Am un formular în frontend care permite utilizatorilor să trimită o postare.

Așa stochez datele când este trimisă o postare:

if ( isset( $_POST['submitted'] )) {
        $post_information = array(
        'post_title' => wp_strip_all_tags( $_POST['postTitle'] ),
        'post_content' => $_POST['postContent'], 
        'post_type' => 'post',
        'post_status' => 'publish'
    );
$new_post = wp_insert_post( $post_information );

Postarea nu apare în pagina mea de postări decât dacă merg în dashboard și apăs butonul ACTUALIZARE.

AȘAA INTEROGHEZ POSTĂRILE MELE:

$args = array(
 'posts_per_page' => 5,
'paged' => $paged,
'meta_query' => array(
array( 'key' => '_wti_like_count','value' => 5, 'compare' => '<=','type' => 'numeric')
)
);

query_posts( $args );

Cum pot face ca postările trimise să fie publicate automat?

5
Comentarii

Codul de mai sus funcționează pentru mine. Ai vreun sistem de aprobare pentru articole? În cazul în care statusul articolului este draft sau pending review, ar trebui să vezi butonul PUBLISH. Deoarece vezi butonul UPDATE, articolul trebuie să fi fost deja publicat.

Chittaranjan Chittaranjan
18 dec. 2013 08:11:18

Ești sigur că atunci când salvezi articolul din frontend, acesta are metadatele _wti_like_count? Dacă nu le are, atunci articolul nu va apărea niciodată. Încearcă $args de mai sus fără meta_query și vezi dacă articolul apare sau nu.

Chittaranjan Chittaranjan
18 dec. 2013 08:23:16

am făcut fără meta_query și articolele apar! cum adaug metadatele _wti_like_count

Oscar Oscar
18 dec. 2013 08:27:11

pentru că vreau să le organizez în funcție de numărul valorii _wti_like_count <= 5

Oscar Oscar
18 dec. 2013 08:29:24

Este în regulă. Te rog verifică răspunsul meu.

Chittaranjan Chittaranjan
18 dec. 2013 08:33:23
Toate răspunsurile la întrebare 2
5

Postarea este adăugată și publicată, dar deoarece aveți interogarea meta și cheia meta nu este adăugată când trimiteți postarea din frontend, aceasta nu apare. Utilizați următorul cod care adaugă metadatele conform necesităților.

if ( isset( $_POST['submitted'] ) ) {
     $post_information = array(
                              'post_title' => wp_strip_all_tags( $_POST['postTitle'] ),
                              'post_content' => $_POST['postContent'],
                              'post_type' => 'post',
                              'post_status' => 'publish'
                         );

     $new_post = wp_insert_post( $post_information );

     // Adaugă metadatele postării
     add_post_meta( $new_post, '_wti_like_count', 0, true );
     add_post_meta( $new_post, '_wti_unlike_count', 0, true );
     add_post_meta( $new_post, '_wti_total_count', 0, true );
}
18 dec. 2013 08:30:26
Comentarii

Încă un mic lucru, prietene! dacă adaug o valoare astfel: add_post_meta( $new_post, '_wti_like_count', 1, true ); de ce valoarea 1 nu apare în frontend? Se afișează doar 0

Oscar Oscar
18 dec. 2013 08:58:06

Datele pe care le vezi în frontend sunt preluate din tabelul pluginului wti_like_post. Meta datele sunt doar adăugate postării pentru a putea fi folosite în interogări personalizate precum cea pe care o ai mai sus. Pentru a menține lucrurile organizate, întotdeauna se adaugă 0 la postare când este creată. Pe măsură ce utilizatorii votează pentru acea postare, ambele valori (din tabelul pluginului și din meta date) se actualizează corespunzător.

Chittaranjan Chittaranjan
18 dec. 2013 09:05:41

Bine, prietene! Mulțumesc mult! Ești un salvator :D

Oscar Oscar
18 dec. 2013 16:44:04

Rețineți că acum puteți face acest lucru în interiorul funcției wp_insert_post utilizând atributul 'meta_input' (de exemplu meta_input => array('meta_field_name => 'meta field value'))

Julian K Julian K
14 nov. 2016 00:12:57

Salutare tuturor, Puteți să mă ajutați să rezolv aceeași problemă? Nu reușesc să o rezolv mergând pe această cale.

Jomol MJ Jomol MJ
26 dec. 2017 14:28:21
3

Nu sunt sigur, dar cred că este din cauză că nu ai adăugat autorul în $post_information:

if( isset($_POST['submitted']) ):
    global $user_ID;
    $post_information = array(             
        'post_title' => wp_strip_all_tags( $_POST['postTitle'] ),
        'post_content' => $_POST['postContent'],
        'post_type' => 'post',
        'post_status' => 'publish', 
        'post_author' => $user_ID, 
        'post_date' => date('Y-m-d H:i:s')
    );
    $post_id = wp_insert_post($post_information);
    if (!$post_id) {
        wp_die('Eroare');
    }
endif;
18 dec. 2013 07:58:04
Comentarii

post_author nu este cel necesar, va crea postarea oricum :)

Sabita Sahoo Sabita Sahoo
18 dec. 2013 08:13:53

Da, cred că este modul în care interoghez postările mele

Oscar Oscar
18 dec. 2013 08:16:18

@SabitaSahoo mulțumesc că m-ai corectat :) dar OP nu și-a clarificat întrebarea după cum poți vedea că a actualizat-o.

jogesh_pi jogesh_pi
18 dec. 2013 10:05:38