Hvordan får man WordPress-kategori/tag/forfatterside til at vise klæbrige artikler?

WordPressDer er en indbygget artikelklæbningsfunktion, men som standard understøttes kun den øverste side til at vise klæbrige artikler.

Andre arkivsider (såsom kategorisider, tagsider, forfattersider og datosider) kan ikke vise klæbrige artikler øverst, kun i standardrækkefølgen.

meget at gøre med WordPressSEOvenner, håber at løse disse problemer.

Hvordan får man WordPress-kategori/tag/forfatterside til at vise klæbrige artikler?

Faktisk behøver vi kun at henvise til koden på startsiden for wp-includes/query.php og ændre den lidt, så toppen af ​​arkivsiden (såsom kategoriside, faneside, forfatterside og datoside) ) kan også vise den øverste artikel.

WordPress klæbrig artikelkode

Indsæt venligst følgende kode i functions.php-filen under dit aktuelle 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 til brug af koden for den klæbrige artikel

1) Hvis du ønsker, at arkivsiden skal vise alle de bedste artikler, skal du slette de 11-43 linjer med kode;

2) Hvis du ikke ønsker at vise den øverste artikel på kategorisiden, skal du tilføje ▼ i linje 3

if(

Rediger til ▼

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

3) Hvis du ikke ønsker at vise den øverste artikel på fanebladet, bedes du ▼ i linje 3

if(

Ændre til:

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

4) Hvis du ikke ønsker, at forfattersiden skal vise den øverste artikel, bedes du ▼ i linje 3

if(

Rediger til ▼

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

5) Hvis du ikke ønsker, at en brugerdefineret kategoriside skal vise den øverste artikel, skal du sætte

if(

Skift det til:

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

Ovenstående kode er kun gyldig for hovedsløjfen, hvis du bruger WP_Query eller query_posts til at få en liste over indlæg på arkivsiden og ønsker at vise det fastgjorte indlæg oven på disse lister.

Du kan slette følgende kode i linje 3 (kan forårsage, at antallet af viste artikler er forskelligt fra det, du har angivet) ▼

|| !is_main_query() 

Tilføj stil til den øverste artikel

Hvis du vil tilføje stilarter til det sticky indlæg, skal du tilføje følgende kode til functions.php og tilføje en klasse med navnet sticky til det sticky indlæg.

Generelle WordPress-temaer vil have CSS-koden for den øverste artikelstil, du kan også tilføje brugerdefinerede ▼

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

Der er en anden måde at få WordPress-kategoriarkivsider til at vise WordPress-artikler øverst▼

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) delt "Hvordan får jeg WordPress-kategori/tag/forfatterside til at vise klæbrige artikler? , at hjælpe dig.

Velkommen til at dele linket til denne artikel:https://www.chenweiliang.com/cwl-878.html

Velkommen til Telegram-kanalen på Chen Weiliangs blog for at få de seneste opdateringer!

🔔 Vær den første til at få den værdifulde "ChatGPT Content Marketing AI Tool Usage Guide" i kanalens øverste bibliotek! 🌟
📚 Denne guide indeholder enorm værdi, 🌟Dette er en sjælden mulighed, gå ikke glip af det! ⏰⌛💨
Del og like hvis du har lyst!
Din deling og likes er vores kontinuerlige motivation!

 

发表 评论

Din e-mail-adresse vil ikke blive offentliggjort. 必填 项 已 用 * 标注

scroll til toppen