post_status => publish no funciona

18 dic 2013, 06:57:34
Vistas: 36.9K
Votos: 3

Tengo un formulario en el frontend que permite a los usuarios enviar una entrada.

Así es como almaceno los datos cuando se envía una entrada:

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

La entrada no se muestra en mi página de entradas a menos que vaya a través del panel de administración y haga clic en el botón ACTUALIZAR.

ASÍ ES COMO CONSULTO MIS ENTRADAS:

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

query_posts( $args );

¿Cómo puedo hacer que mis entradas enviadas se publiquen automáticamente?

5
Comentarios

El código anterior funciona para mí. ¿Tienes algún tipo de sistema de aprobación para las publicaciones? En caso de que el estado de la publicación sea draft o pending review, deberías ver el botón PUBLISH. Como ves el botón UPDATE, la publicación debe estar publicada.

Chittaranjan Chittaranjan
18 dic 2013 08:11:18

¿Estás seguro de que cuando guardas la publicación desde el frontend, la publicación tiene el metadato _wti_like_count? Si no lo tiene, entonces nunca aparecerá esa publicación. Prueba los $args anteriores sin el meta_query y comprueba si aparece la publicación o no.

Chittaranjan Chittaranjan
18 dic 2013 08:23:16

¡Lo hice sin el meta_query y aparecen! ¿Cómo agrego el metadato _wti_like_count

Oscar Oscar
18 dic 2013 08:27:11

porque quiero organizarlos según el número del valor de _wti_like_count <= 5

Oscar Oscar
18 dic 2013 08:29:24

Está bien. Por favor revisa mi respuesta.

Chittaranjan Chittaranjan
18 dic 2013 08:33:23
Todas las respuestas a la pregunta 2
5

La publicación se agrega y se publica, pero como tienes la consulta meta y la clave meta no se agrega cuando envías la publicación desde el frontend, no aparece. Utiliza el siguiente código que agrega los metadatos según sea necesario.

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

     // Agrega los metadatos de la publicación
     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
Comentarios

¡Otra cosita, amigo! Si agrego un valor así: add_post_meta( $new_post, '_wti_like_count', 1, true ); ¿por qué el valor 1 no se muestra en el frontend? Solo muestra 0

Oscar Oscar
18 dic 2013 08:58:06

Los datos que ves en el frontend se extraen de la tabla del plugin wti_like_post. Los metadatos solo se agregan al post para que puedan usarse en consultas personalizadas como la que tienes arriba. Para mantener las cosas limpias, siempre se agrega 0 al post cuando se crea. A medida que los usuarios siguen votando por ese post, ambos valores (en la tabla del plugin y los metadatos) se actualizan en consecuencia.

Chittaranjan Chittaranjan
18 dic 2013 09:05:41

¡Muy bien, amigo! ¡Muchas gracias! Eres un salvavidas :D

Oscar Oscar
18 dic 2013 16:44:04

Ten en cuenta que ahora puedes hacer esto dentro de wp_insert_post usando el atributo 'meta_input' (por ejemplo, meta_input => array('meta_field_name => 'meta field value'))

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

Hola a todos, ¿podrían ayudarme a resolver el mismo problema? No he podido solucionarlo siguiendo este enfoque.

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

No estoy seguro, pero creo que es porque no agregaste el autor en el $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('Error');
    }
endif;
18 dic 2013 07:58:04
Comentarios

post_author no es el requerido, aún así creará el post :)

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

Sí, creo que es la forma en que consulto mis posts

Oscar Oscar
18 dic 2013 08:16:18

@SabitaSahoo gracias por corregirme :) pero el OP no ha aclarado su pregunta como puedes ver que actualizó su pregunta.

jogesh_pi jogesh_pi
18 dic 2013 10:05:38