Intereting Posts
Заголовки, уже отправленные Получить значение атрибута shortcode для другой функции Изменить постоянную ссылку на внешний URL из настраиваемого поля Список сообщений CPT, перечисленных в соответствующих пользовательских правилах таксономии, отображает только 10 должностей на срок – как изменить / удалить лимит? Является ли WordPress API видимым из файла PHP, вызванного в htaccess Сортировка персонализированных сообщений типа публикации в месяц публикации и вставка в другую строку jQuery UI Theme, который идеально сочетается с пользовательским интерфейсом администратора Как вы делаете свою тему Child Theme-able? ajax response -1 в теме wordpress Исключая верхний уровень от таксономии и пост-цикла Действие save_post внутри настраиваемого класса метабокса не работает Как добавить отзывы с изображением? Сохраните исходное имя изображения при изменении размера WP_User_Query не ищет номера? Присоединиться к register_admin_color_schemes

Как изменить запрос sql для wp_get_archive ()

Я использую wp_get_archive() в category.php .

Если я на странице category=2 он должен показывать мои архивы только этой категории. Однако это относится ко всем категориям.

Итак, как я могу изменить запрос для wp_get_archive() который он перенаправляет только в шаблон архива для этой конкретной категории
это код в моей category.php

 <?php get_header(); ?> <?php $args =array( 'posts_per_page' =>1, ); $loop = new WP_Query( $args ); if($loop->have_posts()):while ( $loop->have_posts() ): $loop->the_post(); the_content(); endwhile; endif; ?> <?php wp_get_archives( array( 'type' => 'daily') ); ?> 

и если тот же код для archive.php

Solutions Collecting From Web of "Как изменить запрос sql для wp_get_archive ()"

Рассматривая исходный код для wp_get_archives() , существует фильтр с именем getarchives_join который можно использовать для ограничения wp_get_archives() для определенной категории

Вам также нужно получить текущий идентификатор категории, что легко, просто используйте get_queried_object_id()

Вы можете попробовать что-то подобное, чтобы отображать архивы для просматриваемой в данный момент категории

 add_filter( 'getarchives_join', function ($r) { global $wpdb; if( is_category() ) { $category_id = get_queried_object_id(); $r = $wpdb->prepare( " INNER JOIN $wpdb->term_relationships AS tr ON $wpdb->posts.ID = tr.object_id AND tr.term_taxonomy_id IN (%s)", $category_id ); } return $r; }, 10, 2 ); 

РЕДАКТИРОВАТЬ

Всего один или два комментария о вашем коде в вашем последнем редактировании. Поскольку это код в шаблонах category.php и archive.php, вы не должны использовать пользовательские запросы. Я подозреваю, что именно здесь у вас большая проблема.

Используйте pre_get_posts для изменения основного запроса в соответствии с вашими потребностями. Вам нужно удалить пользовательские запросы и вернуться к циклу по умолчанию на этих двух страницах архива.

Вот как выглядит ваша страница категории

 <?php get_header(); ?> <?php if( have_posts() ) { while ( have_posts() ) { the_post(); the_content(); } } ?> <?php wp_get_archives( array( 'type' => 'daily') ); ?> 

Затем в файле functions.php добавьте следующий код

 add_action( 'pre_get_posts', function ( $q ) { if( !is_admin() && $q->is_main_query() && ( $q->is_category() || $q->is_date() ) ) { $q->set( 'posts_per_page', 1 ); } }); 

Это приведет к тому, что сообщения на странице будут размещены на странице архива и категории