Intereting Posts
Пользовательские параметры – регистрация, по умолчанию и удаление пустых полей (Settings API) Как разрешить 500 ошибок на странице после листинга? Когда название и название категории одинаковы … WP выберет archive.php вместо single.php Закрытый класс html после счетчика = несколько из 3 wp_get_post_terms () возвращает WP_Error в functions.php, но в шаблоне он работает Как разместить пользовательские типы сообщений на главной странице author.php показывает профили всех пользователей, а не только авторов Пользовательский фон только для индексной страницы? Заменить контент только через rest api? Лучше ли создавать репозиторий Git на корневом уровне или в каталоге тем WordPress? Добавить прозрачность для выбора цвета WordPress? Как скрыть сообщение Является ли хорошей практикой изменять настройки мультимедиа при активации темы? Изменение порядка пользовательской таксономии Перерыв строки wp_mail не работает

последние сообщения-виджет отображает все сообщения на странице архива, но отлично работает в другом месте

Я заметил, что последние сообщения в моем нижнем колонтитуле отображают все сообщения. В любом месте на моей странице он отображает только количество сообщений, которые он должен. Я использую настраиваемую тему, и это мой архив archive.php:

<?php get_header(); ?> <div id="maincol"> <article id="page-<?php the_ID(); ?>" class="page"> <header class="page-header"> <h1 class="page-title">Post Type Archive Title</h1> </header> <?php $posts = query_posts($query_string . '&orderby=meta_value_num&meta_key=premium&posts_per_page=6'); ?> <?php if ( have_posts() ) : ?> <h3 class="toggle">Filter</h3> <div id="filterbox"> <?php echo do_shortcode('[ULWPQSF id=82 formtitle="0"]'); ?> <small class="toggle-close">close</small> </div> <?php echo '<div class="objects">'; echo '<ul class="list-objects clear">'; while ( have_posts() ) { the_post(); get_template_part('content', 'my-post-type'); } if(function_exists('wp_pagenavi')) : wp_pagenavi(); endif; endif; echo '</ul>'; echo '</div>'; wp_reset_query(); wp_reset_postdata(); ?> </article> </div><!-- maincol--> <aside class="sidebar" id="sidebar-main"> <?php get_sidebar(); ?> </aside> <div class="clear"></div> <?php get_footer(); ?> 

Вы можете заметить ошибку?

Благодаря комментариям от @Pieter Goosen и @cybmeta я изменил способ упорядочить сообщения на странице архива, используя pre_get_posts

Я хотел, чтобы моя страница архива отображала сообщения с настраиваемым значением поля 1 и называлась «премиум» (мой метод создания пользовательских липких сообщений), а затем все «обычные» сообщения.

Я добавил следующие строки в файл functions.php (Edit: added! Is_admin (), как было предложено в комментарии Питера):

 function custom_archive_query($query) { if ( is_post_type_archive('my-custom-post-type') && $query->is_main_query() && !is_admin() ) { $query->set( 'posts_per_page', 8 ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'meta_key', 'premium'); $query->set( 'order', 'DESC' ); } } add_action('pre_get_posts', 'custom_archive_query'); 

Очень важно использовать $query->is_main_query() в if -statement, потому что в противном случае любой другой вид запроса (например, меню WP или последние сообщения-виджеты) ничего не отображает.