function only_draft( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
$query->set( 'post_status', 'draft' );
}
}
add_action( 'pre_get_posts', 'only_draft' );
этот код выведет только черновики. используйте там is_category, если надо.
Что-то этот код не работает
Всеравно выводятся все посты
этот код надо добавить в functions.php
ок да работает, но проблема в том, что еще нужно чтобы сами посты открывались, но не было их не в категориях, тегах
не много доделал, но при переходе по посту, отличного от статуса publish — пишит страница не найдена
function only_publish( $query ) {
if ( !is_category() && $query->is_main_query() ) {
$query->set( ‘post_status’, ‘publish’ );
}
}
add_action( ‘pre_get_posts’, ‘only_publish’ );
Все, вроде сделал, так правильно???
function only_draft( $query ) {
if ( is_category( $category ) && $query->is_main_query() ) {
$query->set( ‘post_status’, ‘publish’ );
}
}
add_action( ‘pre_get_posts’, ‘only_draft’ );
во-первых, что у вас в $category?
во-вторых, что в итоге вы хотите получить то?
по умолчанию черновики и «на утверждении» не выводятся.
поэтому 404 ошибка вполне закономерна.
Что-то я уже запутался, в категориях необходимо вывести только посты, которые были опубликованные со статусом publish соответственно.
Но я добавляю к некоторым постам свой статус новый, отдельным скриптом.
При этом, эти посты с новым статусом должны открываться по своему URL но, обязательно их не должно быть в категориях и тегах.
Я не пойму как это сделать
что-то вы меня запутали. вот код:
function only_draft( $query ) {
if ( !is_admin() && is_category() && $query->is_main_query() ) {
$query->set( 'post_status', 'publish' );
}
}
add_action( 'pre_get_posts', 'only_draft' );
function my_custom_post_status(){
register_post_status( 'unread', array(
'label' => _x( 'Unread', 'post' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Unread <span class="count">(%s)</span>', 'Unread <span class="count">(%s)</span>' ),
) );
}
add_action( 'init', 'my_custom_post_status' );
он регистрирует статус «unread», затем выводит в рубриках только записи со статусом «publish», но при этом сама запись со статусом «unread» открывается с главной страницы например.
Модератор
Юрій
(@yube)
Но я добавляю к некоторым постам свой статус новый,
Если речь о поле post_status, то к нему нельзя что-то добавить, можно только изменить значение на другое. По крайней мере, без радикальной переделки движка.
Да, спасибо, теперь всё понятно и правильно работает.
Но вопрос, зачем в условии стоит !is_admin — его убрать можно?
И можно ли добавить еще условие к примеру: is_search() — это будет нормально?
Спасибо!
Если речь о поле post_status, то к нему нельзя что-то добавить, можно только изменить значение на другое. По крайней мере, без радикальной переделки движка.
Да, извиняюсь, изменить статус…
-
Ответ изменён 7 лет, 9 месяцев назад пользователем yura555.
зачем в условии стоит !is_admin — его убрать можно?
Чтобы условие срабатывало только на внешней части сайта, а не в админке.