Похожие записи в теме Kadence
Тема Kadence под WordPress поставляется со встроенными настройками похожих записей для одиночных постов через Кастомайзер. Давайте посмотрим, что у неё под капотом.
Для начала откроем файл-шаблон для одиночной записи /kadence/template-parts/content/single-entry.php
:
<?php
if ( is_singular( get_post_type() ) ) {
...
if ( 'post' === get_post_type() && kadence()->option( 'post_related' ) ) {
get_template_part( 'template-parts/content/entry_related', get_post_type() );
}
...
}
Здесь мы видим проверку, что текущая страница — это одиночная запись, что в настройках Кастомайзера (Внешний вид -> Настройки -> Записи блога -> Макет одиночной записи) включены похожие записи и загружается шаблон template-parts/content/entry_related.php
.
И в этом файле находим нужный нам фильтр:
$bpc = new WP_Query( apply_filters( 'kadence_related_posts_carousel_args', $args ) );
Теперь ищем вхождение фильтра kadence_related_posts_carousel_args
по всей теме Kadence и находим его в файле inc/template-functions/single-functions.php
:
/**
* Get the related posts args.
*
* @param number $post_id the post id.
* @return array query args.
*/
function get_related_posts_args( $post_id ) {
if ( apply_filters( 'kadence_related_posts_use_tags', true ) ) {
// Get categories.
$categories = get_the_terms( $post_id, 'category' );
if ( empty( $categories ) || is_wp_error( $categories ) ) {
$categories = array();
}
$category_list = wp_list_pluck( $categories, 'slug' );
// Get Tags.
$tags = get_the_terms( $post_id, 'post_tag' );
if ( empty( $tags ) || is_wp_error( $tags ) ) {
$tags = array();
}
$tag_list = wp_list_pluck( $tags, 'slug' );
$related_args = array(
'post_type' => 'post',
'posts_per_page' => 6,
'no_found_rows' => true,
'post_status' => 'publish',
// 'update_post_meta_cache' => false,
// 'update_post_term_cache' => false,
'post__not_in' => array( $post_id ),
'orderby' => 'rand',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $category_list,
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $tag_list,
),
),
);
} else {
$categories = get_the_terms( $post_id, 'category' );
if ( empty( $categories ) || is_wp_error( $categories ) ) {
$categories = array();
}
$category_list = wp_list_pluck( $categories, 'term_id' );
$related_args = array(
'post_type' => 'post',
'posts_per_page' => 6,
'no_found_rows' => true,
'post_status' => 'publish',
// 'update_post_meta_cache' => false,
// 'update_post_term_cache' => false,
'post__not_in' => array( $post_id ),
'orderby' => 'rand',
'category__in' => $category_list,
);
}
return apply_filters( 'kadence_related_posts_args', $related_args );
}
Изначально код внутри блока if
выполняется, поскольку фильтр kadence_related_posts_use_tags
по умолчанию возвращает значение true
, если он не переопределен в вашей теме.
Код выше извлекает 6 последних записей из базы данных, имеющих те же теги или категории, что и текущий пост, и показывает их в случайном порядке, исключая текущую запись.
Если вы хотите, чтобы похожие записи подбирались, основываясь только на текущей рубрике, то просто верните false
в фильтре kadence_related_posts_use_tags
:
add_filter( 'kadence_related_posts_use_tags', '__return_false' );
Подскажите как добавить вывод отрывка в похожих записях Kadence
А разве в настройках нет галочки соответствующей?
Приветствую! Слабый функционал похожих записей в этой теме, я купил про версию и теперь недоумеваю, такая раскрученная тема. Вопрос! Можно вывести похожие записи конкретной рубрики по дате публикации и можно ли их вывести простым списком без миниатюр?
На вкус и цвет все фломастеры — разные.
Подскажите, а при изменении в фильтре
kadence_related_posts_use_tags
на false, постраничная навигация тоже будет только по выбранной рубрике производиться?