Як зробити так, щоб на сторінці категорії/тегу/автора WordPress відображалися прикріплені статті?

WordPress має вбудовану функцію закріплення публікацій, але за замовчуванням вона відображає закріплені публікації лише на головній сторінці.

Інші архівні сторінки (такі як сторінки категорій, сторінки тегів, сторінки авторів і сторінки дат) не можуть відображати закріплені статті вгорі, лише в порядку за замовчуванням.

Багато людей, які використовують WordPress для SEO, сподіваються вирішити ці проблеми.

Як зробити так, щоб на сторінці категорії/тегу/автора WordPress відображалися прикріплені статті?

Насправді нам потрібно лише звернутися до коду домашньої сторінки wp-includes/query.php і трохи змінити його, щоб верхня частина сторінки архіву (наприклад, сторінки категорії, сторінки вкладки, сторінки автора та сторінки дати) ) також може відображати першу статтю.

Прикріплений код статті WordPress

Будь ласка, додайте наступний код у файл functions.php під вашою поточною темою ▼

//让WordPress分类、标签、存档和作者页显示置顶文章
add_filter('the_posts', 'putStickyOnTop' );
function putStickyOnTop( $posts ) {
if ( is_series() || is_home() || !is_main_query() || !is_archive())
return $posts;

global $wp_query;

$sticky_posts = get_option('sticky_posts');

if ( $wp_query->query_vars['paged'] <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !get_query_var('ignore_sticky_posts') ) { $stickies1 = get_posts( array( 'post__in' => $sticky_posts ) );
foreach ( $stickies1 as $sticky_post1 ) {
// 判断当前是否分类页 
if($wp_query->is_category == 1 && !has_category($wp_query->query_vars['cat'], $sticky_post1->ID)) {
// 移除不是本分类的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
if($wp_query->is_tag == 1 && has_tag($wp_query->query_vars['tag'], $sticky_post1->ID)) {
// 移除不是本标签的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
if($wp_query->is_year == 1 && date_i18n('Y', strtotime($sticky_post1->post_date))!=$wp_query->query['m']) {
// 移除不是本年份的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
if($wp_query->is_month == 1 && date_i18n('Ym', strtotime($sticky_post1->post_date))!=$wp_query->query['m']) {
// 移除不是本月份的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
if($wp_query->is_day == 1 && date_i18n('Ymd', strtotime($sticky_post1->post_date))!=$wp_query->query['m']) {
// 移除不是本日期的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
if($wp_query->is_author == 1 && $sticky_post1->post_author != $wp_query->query_vars['author']) {
// 移除不是本作者的文章
$offset1 = array_search($sticky_post1->ID, $sticky_posts);
unset( $sticky_posts[$offset1] );
}
}

$num_posts = count($posts);
$sticky_offset = 0;
// Loop over posts and relocate stickies to the front.
for ( $i = 0; $i < $num_posts; $i++ ) {
if ( in_array($posts[$i]->ID, $sticky_posts) ) {
$sticky_post = $posts[$i];
// Remove sticky from current position
array_splice($posts, $i, 1);
// Move to front, after other stickies
array_splice($posts, $sticky_offset, 0, array($sticky_post));
// Increment the sticky offset. The next sticky will be placed at this offset.
$sticky_offset++;
// Remove post from sticky posts array
$offset = array_search($sticky_post->ID, $sticky_posts);
unset( $sticky_posts[$offset] );
}
}

// If any posts have been excluded specifically, Ignore those that are sticky.
if ( !empty($sticky_posts) && !empty($wp_query->query_vars['post__not_in'] ) )
$sticky_posts = array_diff($sticky_posts, $wp_query->query_vars['post__not_in']);

// Fetch sticky posts that weren't in the query results
if ( !empty($sticky_posts) ) {
$stickies = get_posts( array(
'post__in' => $sticky_posts,
'post_type' => $wp_query->query_vars['post_type'],
'post_status' => 'publish',
'nopaging' => true
) );

foreach ( $stickies as $sticky_post ) {
array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
$sticky_offset++;
}
}
}

return $posts;
}

//置顶文章添加样式
add_filter('post_class',  'addStickyClass' ,10,3 );
function addStickyClass( $classes, $class, $post_id ){
  if( is_sticky() && is_category() && !isset( $classes['sticky'] ) ){
    $classes[] = 'sticky';
  }
  
  return $classes;
} 

Інструкція з використання коду липкої статті

1) Якщо ви хочете, щоб сторінка архіву відображала всі найпопулярніші статті, видаліть 11-43 рядки коду;

2) Якщо ви не хочете відображати першу статтю на сторінці категорії, додайте ▼ у рядку 3

if(

Змінити на ▼

// abc是分类的名称
if ( is_category( 'abc' ) || 

3) Якщо ви не хочете відображати першу статтю на сторінці вкладки, будь ласка, ▼ у рядку 3

if(

змінити в:

// abc是标签的名称
if ( is_tag( 'abc' ) || 

4) Якщо ви не хочете, щоб сторінка автора відображала першу статтю, будь ласка, ▼ у рядку 3

if(

Змінити на ▼

// abc是作者的昵称
if ( is_author( 'abc' ) || 

5) Якщо ви не хочете, щоб сторінка спеціальної категорії відображала першу статтю, поставте

if(

Змініть його на:

// series是自定义分类、abc是自定义分类名称
if ( is_series( 'abc' ) ||

Наведений вище код дійсний лише для основного циклу, якщо ви використовуєте WP_Query або query_posts для отримання списку публікацій на сторінці архіву та хочете відобразити закріплену публікацію поверх цих списків.

Ви можете видалити наступний код у рядку 3 (може призвести до того, що кількість відображених статей буде відрізнятися від заданої вами) ▼

|| !is_main_query() 

Додайте стилю верхній статті

Якщо ви хочете додати стилі до липкої публікації, додайте наступний код до functions.php і додайте до липкої публікації клас під назвою sticky.

У загальних темах WordPress для стилю верхньої статті буде код CSS, ви також можете додати власний ▼

//置顶文章添加样式
add_filter('post_class',  'addStickyClass' ,10,3 );
function addStickyClass( $classes, $class, $post_id ){
  if( is_sticky() && is_category() && !isset( $classes['sticky'] ) ){
    $classes[] = 'sticky';
  }
  
  return $classes;
} 

Існує інший спосіб зробити так, щоб сторінки архіву категорій WordPress відображали статті WordPress угорі▼

Сподіваємося, що стаття «Як відображати закріплені публікації на сторінках категорій/тегів/авторів WordPress?», опублікована в блозі Чень Вейляна ( https://www.chenweiliang.com/ ), буде вам корисною.

Не соромтеся поділитися посиланням на цю статтю: https://www.chenweiliang.com/cwl-878.html

Щоб розкрити більше прихованих хитрощів🔑, приєднуйтесь до нашого Telegram-каналу!

Поділіться та поставте лайк, якщо вам подобається! Ваші розповсюдження та вподобання — наша постійна мотивація!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Прокрутка до початку