post_status => publish не работает

18 дек. 2013 г., 06:57:34
Просмотры: 36.9K
Голосов: 3

У меня есть форма на фронтенде, которая позволяет пользователям отправлять посты.

Вот как я сохраняю данные при отправке поста:

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

Пост не отображается на странице постов, пока я не зайду в панель управления и не нажму кнопку ОБНОВИТЬ.

ВОТ КАК Я ДЕЛАЮ ЗАПРОС ПОСТОВ:

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

query_posts( $args );

Как сделать так, чтобы отправленные посты публиковались автоматически?

5
Комментарии

Приведенный выше код работает у меня. У вас есть какая-то система утверждения постов? Если статус поста draft (черновик) или pending review (на рассмотрении), вы должны видеть кнопку PUBLISH (Опубликовать). Раз вы видите кнопку UPDATE (Обновить), значит пост уже был опубликован.

Chittaranjan Chittaranjan
18 дек. 2013 г. 08:11:18

Вы уверены, что при сохранении поста из фронтенда у поста есть метаданные _wti_like_count? Если их нет, то пост никогда не будет отображаться. Попробуйте использовать указанные выше $args без meta_query и посмотрите, появится ли пост.

Chittaranjan Chittaranjan
18 дек. 2013 г. 08:23:16

Я сделал это без meta_query, и посты отобразились! Как добавить метаданные _wti_like_count?

Oscar Oscar
18 дек. 2013 г. 08:27:11

потому что я хочу организовать их в соответствии с количеством значения _wti_like_count <= 5

Oscar Oscar
18 дек. 2013 г. 08:29:24

Хорошо. Пожалуйста, проверьте мой ответ.

Chittaranjan Chittaranjan
18 дек. 2013 г. 08:33:23
Все ответы на вопрос 2
5

Запись добавляется и публикуется, но поскольку у вас есть мета-запрос (meta query), а мета-ключ не добавляется при отправке записи через фронтенд, она не отображается. Используйте следующий код, который добавляет необходимые метаданные:

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

     // Добавляем метаданные записи
     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 дек. 2013 г. 08:30:26
Комментарии

Ещё один маленький вопрос, дружище! Если я добавляю значение вот так: add_post_meta( $new_post, '_wti_like_count', 1, true ); почему значение 1 не отображается на фронтенде? Там показывается только 0.

Oscar Oscar
18 дек. 2013 г. 08:58:06

Данные, которые ты видишь на фронтенде, берутся из таблицы плагина wti_like_post. Метаданные просто добавляются к записи, чтобы их можно было использовать в кастомных запросах, как в твоём примере выше. Для поддержания порядка, при создании записи всегда добавляется 0. По мере того как пользователи голосуют за эту запись, оба значения (в таблице плагина и в метаданных) обновляются соответствующим образом.

Chittaranjan Chittaranjan
18 дек. 2013 г. 09:05:41

Понял, дружище! Огромное спасибо! Ты просто спаситель :D

Oscar Oscar
18 дек. 2013 г. 16:44:04

Обратите внимание, что теперь это можно сделать внутри wp_insert_post, используя атрибут 'meta_input' (например, meta_input => array('meta_field_name => 'meta field value'))

Julian K Julian K
14 нояб. 2016 г. 00:12:57

Всем привет. Можете ли вы помочь мне решить ту же проблему? У меня не получается решить эту проблему таким способом.

Jomol MJ Jomol MJ
26 дек. 2017 г. 14:28:21
3

Я не уверен, но думаю, что это из-за того, что вы не добавили автора в массив $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('Ошибка');
    }
endif;
18 дек. 2013 г. 07:58:04
Комментарии

post_author не является обязательным, пост всё равно будет создан :)

Sabita Sahoo Sabita Sahoo
18 дек. 2013 г. 08:13:53

Да, думаю, это зависит от того, как я запрашиваю свои посты

Oscar Oscar
18 дек. 2013 г. 08:16:18

@SabitaSahoo спасибо, что поправили :) но автор вопроса не уточнил свой вопрос, как видно, он обновил его.

jogesh_pi jogesh_pi
18 дек. 2013 г. 10:05:38