Hur får man WordPress-kategori/tagg/författarsida att visa klibbiga artiklar?

WordpressDet finns en inbyggd artikelfastningsfunktion, men som standard stöds endast den översta sidan för att visa klibbiga artiklar.

Andra arkivsidor (som kategorisidor, taggsidor, författarsidor och datumsidor) kan inte visa klibbiga artiklar överst, bara i standardordningen.

mycket att göra med WordPressSEOvänner, hoppas kunna lösa dessa problem.

Hur får man WordPress-kategori/tagg/författarsida att visa klibbiga artiklar?

Faktum är att vi bara behöver hänvisa till koden för hemsidan för wp-includes/query.php och ändra den något, så att toppen av arkivsidan (som kategorisida, fliksida, författaresida och datumsida) ) kan också visa den översta artikeln.

WordPress klibbig artikelkod

Vänligen lägg in följande kod i functions.php-filen under ditt aktuella tema ▼

//让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;
} 

Instruktioner för att använda koden för den klibbiga artikeln

1) Om du vill att arkivsidan ska visa alla toppartiklar, vänligen ta bort de 11-43 raderna med kod;

2) Om du inte vill visa den översta artikeln på kategorisidan, lägg till ▼ på rad 3

if(

Ändra till ▼

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

3) Om du inte vill visa den översta artikeln på fliksidan, vänligen ▼ på rad 3

if(

byta om till:

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

4) Om du inte vill att författarsidan ska visa den översta artikeln, vänligen ▼ på rad 3

if(

Ändra till ▼

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

5) Om du inte vill att en anpassad kategorisida ska visa den översta artikeln, lägg till

if(

Ändra det till:

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

Ovanstående kod är endast giltig för huvudslingan, om du använder WP_Query eller query_posts för att få en lista med inlägg på arkivsidan och vill visa det fästa inlägget ovanpå dessa listor.

Du kan ta bort följande kod på rad 3 (kan orsaka att antalet artiklar som visas skiljer sig från vad du ställt in) ▼

|| !is_main_query() 

Lägg till stil i den översta artikeln

Om du vill lägga till stilar till det klibbiga inlägget, lägg till följande kod till functions.php och lägg till en klass som heter sticky i det klibbiga inlägget.

Allmänna WordPress-teman kommer att ha CSS-koden för den översta artikelstilen, du kan också lägga till anpassade ▼

//置顶文章添加样式
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;
} 

Det finns ett annat sätt att få WordPress-kategoriarkivsidor att visa WordPress-artiklar överst▼

Hope Chen Weiliang blogg ( https://www.chenweiliang.com/ ) delade "Hur får jag WordPress-kategori/tagg/författarsida att visa klibbiga artiklar? , att hjälpa dig.

Välkommen att dela länken till denna artikel:https://www.chenweiliang.com/cwl-878.html

Välkommen till Telegram-kanalen på Chen Weiliangs blogg för att få de senaste uppdateringarna!

🔔 Bli först med att få den värdefulla "ChatGPT Content Marketing AI Tool Usage Guide" i kanalens toppkatalog! 🌟
📚 Den här guiden innehåller ett enormt värde, 🌟Detta är ett sällsynt tillfälle, missa inte det! ⏰⌛💨
Dela och gilla om du vill!
Dina delning och likes är vår ständiga motivation!

 

发表 评论

Din e-postadress kommer inte att publiceras. 必填 项 已 用 * 标注

scrolla till toppen