Intereting Posts
Запрос не может искать данные с пространством? Создание показанного изображения на главной странице Проблема с URL-адресом администратора WordPress – сокращенное перенаправление «admin» больше не работает Каковы преимущества установки «признанного изображения» для записи в блоге WP? Было бы неправильно сохранять постоянные ссылки в качестве постмета и восстанавливать их при сохранении сообщения? получать детей от текущей переменной (таксономии) с помощью короткого кода Как проверить массив идентификаторов изображений Список условий по категориям Новый WP_Query не изолирует пользовательские типы сообщений на шаблоне на первой странице Начать разбиение на страницы с номера 1 по URL Как добавить стиль-mobile css из основной темы в дочернюю? Как разбирать вложенные короткие коды? Как запустить цикл с запросом или без него Почему вы не можете разместить Loop вне index.php? Общее количество W3 – кэширование браузера браузера, не работающее с полученными изображениями cdn

Как изменить запрос 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 ); } }); 

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