Как да накарате страницата за категория/таг/автор на 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 в блога на Chen Weiliang, за да получите най-новите актуализации!

🔔 Бъдете първите, получили ценното „Ръководство за използване на инструмента за изкуствен интелект за маркетинг на съдържание ChatGPT“ в горната директория на канала! 🌟
📚 Това ръководство съдържа огромна стойност, 🌟Това е рядка възможност, не я пропускайте! ⏰⌛💨
Споделете и харесайте, ако ви харесва!
Вашите споделяния и харесвания са нашата постоянна мотивация!

 

发表 评论

Вашият имейл адрес няма да бъде публикуван. Използват се задължителните полета * Етикет

превъртете до върха