post_status => publish не работает
У меня есть форма на фронтенде, которая позволяет пользователям отправлять посты.
Вот как я сохраняю данные при отправке поста:
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 );
Как сделать так, чтобы отправленные посты публиковались автоматически?
Запись добавляется и публикуется, но поскольку у вас есть мета-запрос (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 );
}

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

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

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

Я не уверен, но думаю, что это из-за того, что вы не добавили автора в массив $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;

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