Как сделать так, чтобы страница категории/тега/автора 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 вверху▼

Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ ) поделился «Как сделать так, чтобы страница категории/тега/автора WordPress отображала прикрепленные статьи? , чтобы помочь вам.

Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-878.html

Добро пожаловать на Telegram-канал блога Chen Weiliang, чтобы быть в курсе последних обновлений!

🔔 Будьте первым, кто получит ценное «Руководство по использованию инструмента искусственного интеллекта для контент-маркетинга ChatGPT» в верхнем каталоге канала! 🌟
📚 Это руководство содержит огромную ценность. 🌟Это редкая возможность, не упустите ее! ⏰⌛💨
Делитесь и ставьте лайк, если хотите!
Ваш обмен и лайки - наша постоянная мотивация!

 

发表 评论

Ваш электронный адрес не будет опубликован. 必填 项 已 用 * 标注

滚动 到 顶部