post_status => publish non funziona

18 dic 2013, 06:57:34
Visualizzazioni: 36.9K
Voti: 3

Ho un modulo frontend che permette agli utenti di inviare un post.

Questo è il modo in cui memorizzo i dati quando viene inviato un post:

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

Il post non viene mostrato nella mia pagina dei post a meno che non vada nella dashboard e clicchi sul pulsante AGGIORNA.

QUESTO È IL MODO IN CUI ESEGUO LA QUERY DEI MIEI POST:

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

query_posts( $args );

Come posso fare in modo che i post inviati vengano pubblicati automaticamente?

5
Commenti

Il codice sopra funziona per me. Hai qualche tipo di sistema di approvazione per i post? Nel caso in cui lo stato del post sia draft (bozza) o pending review (in attesa di revisione), dovresti vedere il pulsante PUBLISH (PUBBLICA). Dal momento che vedi il pulsante UPDATE (AGGIORNA), il post deve essere già stato pubblicato.

Chittaranjan Chittaranjan
18 dic 2013 08:11:18

Sei sicuro che quando salvi il post dal frontend, il post abbia i metadati _wti_like_count? Se non li ha, quel post non verrà mai mostrato. Prova gli $args sopra senza il meta_query e vedi se il post viene visualizzato o meno.

Chittaranjan Chittaranjan
18 dic 2013 08:23:16

L'ho fatto senza il meta_query e i post vengono visualizzati! Come posso aggiungere i metadati _wti_like_count?

Oscar Oscar
18 dic 2013 08:27:11

perché voglio organizzarli in base al numero del valore di _wti_like_count <= 5

Oscar Oscar
18 dic 2013 08:29:24

Va bene. Per favore controlla la mia risposta.

Chittaranjan Chittaranjan
18 dic 2013 08:33:23
Tutte le risposte alla domanda 2
5

Il post viene aggiunto e pubblicato, ma poiché hai la meta query e la meta key non viene aggiunta quando invii il post dal frontend, non viene visualizzato. Utilizza il seguente codice che aggiunge i metadati come richiesto.

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

     // Aggiungi i metadati del post
     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 dic 2013 08:30:26
Commenti

Un'altra piccola cosa, amico mio! Se aggiungo un valore così add_post_meta( $new_post, '_wti_like_count', 1, true ); perché il valore 1 non viene visualizzato sul front end? Mostra solo 0

Oscar Oscar
18 dic 2013 08:58:06

I dati che vedi sul frontend vengono estratti dalla tabella del plugin wti_like_post. I meta dati vengono semplicemente aggiunti al post in modo che possano essere utilizzati in query personalizzate come quella che hai sopra. Per mantenere le cose pulite, viene sempre aggiunto 0 al post quando viene creato. Man mano che gli utenti votano per quel post, entrambi i valori (nella tabella del plugin e nei meta dati) vengono aggiornati di conseguenza.

Chittaranjan Chittaranjan
18 dic 2013 09:05:41

Va bene, amico mio! Grazie mille! Sei un salvatore :D

Oscar Oscar
18 dic 2013 16:44:04

Nota che ora puoi farlo all'interno di wp_insert_post usando l'attributo 'meta_input' (ad esempio meta_input => array('meta_field_name => 'meta field value'))

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

Ciao a tutti, potete aiutarmi a risolvere lo stesso problema? Non riesco a risolverlo seguendo questo approccio.

Jomol MJ Jomol MJ
26 dic 2017 14:28:21
3

Non sono sicuro, ma penso che sia perché non hai aggiunto l'autore nell'array $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('Errore');
    }
endif;
18 dic 2013 07:58:04
Commenti

post_author non è quello richiesto, creerà comunque il post :)

Sabita Sahoo Sabita Sahoo
18 dic 2013 08:13:53

Sì, penso dipenda dal modo in cui effettuo la query sui miei post

Oscar Oscar
18 dic 2013 08:16:18

@SabitaSahoo grazie per avermi corretto :) ma l'OP non ha chiarito la sua domanda come puoi vedere che ha aggiornato il suo post.

jogesh_pi jogesh_pi
18 dic 2013 10:05:38