Cum să faci ca pagina WordPress categorie/etichetă/autor să arate articole lipicioase?

WordPressExistă o funcție încorporată de lipire a articolelor, dar în mod implicit doar pagina de sus este acceptată pentru afișarea articolelor lipicioase.

Alte pagini de arhivă (cum ar fi pagini de categorii, pagini de etichete, pagini de autor și pagini de date) nu pot afișa articole lipicioase în partea de sus, doar în ordinea implicită.

multe de-a face cu WordPressSEOprieteni, sper să rezolvăm aceste probleme.

Cum să faci ca pagina WordPress categorie/etichetă/autor să arate articole lipicioase?

De fapt, trebuie doar să ne referim la codul paginii de pornire a wp-includes/query.php și să-l modificăm ușor, astfel încât partea de sus a paginii de arhivă (cum ar fi pagina de categorie, pagina de filă, pagina de autor și pagina de dată). ) poate afișa și articolul de sus.

Cod de articol WordPress lipicios

Vă rugăm să puneți următorul cod în fișierul functions.php sub tema dvs. curentă ▼

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

Instrucțiuni pentru utilizarea codului articolului lipicios

1) Dacă doriți ca pagina de arhivă să afișeze toate articolele de top, vă rugăm să ștergeți cele 11-43 de rânduri de cod;

2) Dacă nu doriți să afișați articolul de sus pe pagina categoriei, vă rugăm să adăugați ▼ în rândul 3

if(

Modificați în ▼

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

3) Dacă nu doriți să afișați articolul de sus pe pagina de filă, vă rugăm ▼ în rândul 3

if(

schimbă în:

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

4) Dacă nu doriți ca pagina autorului să afișeze articolul de sus, vă rugăm să ▼ în rândul 3

if(

Modificați în ▼

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

5) Dacă nu doriți ca o pagină de categorie personalizată să afișeze articolul de sus, puneți

if(

Schimbați-l în:

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

Codul de mai sus este valabil numai pentru bucla principală, dacă utilizați WP_Query sau query_posts pentru a obține o listă de postări pe pagina de arhivă și doriți să afișați postarea fixată în partea de sus a acestor liste.

Puteți șterge următorul cod din rândul 3 (poate face ca numărul de articole afișat să fie diferit de cel setat) ▼

|| !is_main_query() 

Adăugați stil articolului de sus

Dacă doriți să adăugați stiluri la postarea sticky, adăugați următorul cod la functions.php și adăugați o clasă numită sticky la postarea sticky.

Temele generale WordPress vor avea codul CSS al stilului articolului de top, puteți adăuga și ▼ personalizat

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

Există o altă modalitate de a face ca paginile din arhiva categoriilor WordPress să arate articole WordPress în partea de sus▼

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) a distribuit „Cum să faci ca pagina WordPress pentru categoria/eticheta/autorul să arate articole lipicioase? , sa te ajut.

Bine ați venit să distribuiți linkul acestui articol:https://www.chenweiliang.com/cwl-878.html

Bun venit pe canalul Telegram al blogului lui Chen Weiliang pentru a primi cele mai recente actualizări!

🔔 Fii primul care primește valorosul „Ghid de utilizare a instrumentului AI pentru marketing de conținut ChatGPT” în directorul de top al canalului! 🌟
📚 Acest ghid conține o valoare uriașă, 🌟Aceasta este o oportunitate rară, nu o ratați! ⏰⌛💨
Distribuie si da like daca iti place!
Partajarea și like-urile tale sunt motivația noastră continuă!

 

发表 评论

Adresa ta de email nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

derulați în sus