столкнулся с этой проблемой в проекте, но не нашел решения онлайн - мой не симпатичная PHP, но это делает трюк.
Это игра с фильтра, предложенная Кэти, с которой я столкнулся в нескольких форумах поддержки. Это идет в вашем functions.php
:
add_filter('getarchives_where', 'customarchives_where');
add_filter('getarchives_join', 'customarchives_join');
function customarchives_join($x) {
global $wpdb;
return $x . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)";
}
function customarchives_where($x) {
global $wpdb;
$categories = get_terms('taxonomy-name', 'orderby=id');
$includeIds;
$i = 0;
foreach($categories as $category) {
if($i != 0) $includeIds .= ',';
$includeIds .= $category->term_id;
$i++;
}
return $x . " AND $wpdb->term_taxonomy.taxonomy = 'taxonomy-name'
AND $wpdb->term_taxonomy.term_id IN ($includeIds)";
}
Во второй функции, поменять taxonomy-name
на имя вашего фактического пользовательского систематики.
Все идентификаторы терминов в вашей пользовательской таксономии фиксируются в строке; остальные действуют так же, как и исходная функция - только список категорий из вашей пользовательской таксономии включен в список wp_get_archives()
. Вы также можете настроить код, чтобы исключить их (первый пример выше).
Если вам нужен только один экземпляр списка wp_get_archives()
, просто пропустите верхние две строки кода в functions.php
, которые применяют фильтры. Затем, когда вы используете wp_get_archives()
тег, применять фильтры перед ним, и удалить их потом:
<?php
add_filter('getarchives_where', 'customarchives_where');
add_filter('getarchives_join', 'customarchives_join');
wp_get_archives();
remove_filter('getarchives_where', 'customarchives_where');
remove_filter('getarchives_join', 'customarchives_join');
?>
Любая из этих работ? – markratledge