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

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

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

багато спільного з WordPressSEOдрузі, сподіваюся вирішити ці проблеми.

Як зробити так, щоб на сторінці категорії/тегу/автора 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 угорі▼

Блог Hope Chen Weiliang ( https://www.chenweiliang.com/ ) поділився «Як зробити так, щоб на сторінці категорії/тегу/автора WordPress відображалися закріплені статті? , щоб допомогти вам.

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

Ласкаво просимо до каналу Telegram у блозі Чень Вейляна, щоб отримувати останні оновлення!

🔔 Станьте першим, хто отримає цінний «Посібник із використання інструменту штучного інтелекту маркетингу контенту ChatGPT» у верхньому каталозі каналу! 🌟
📚 Цей посібник має величезну цінність. 🌟Це рідкісна можливість, не пропустіть її! ⏰⌛💨
Поділіться та вподобайте, якщо вам подобається!
Ваші публікації та лайки є нашою постійною мотивацією!

 

发表 评论

Ваша електронна адреса не буде опублікована. 必填 项 已 用 * Етикетка

прокрутіть наверх