Kako natjerati WordPress kategoriju/oznaku/autor da prikazuje ljepljive članke?

WordPressPostoji ugrađena funkcija lijepljenja članaka, ali prema zadanim postavkama samo je gornja stranica podržana za prikaz ljepljivih članaka.

Druge arhivske stranice (kao što su stranice kategorija, stranice sa oznakama, stranice autora i stranice sa datumima) ne mogu prikazati zakačene članke na vrhu, samo prema zadanom redoslijedu.

ima puno posla sa WordPress-omSEOprijatelji, nadamo se da ćemo riješiti ove probleme.

Kako natjerati WordPress kategoriju/oznaku/autor da prikazuje ljepljive članke?

U stvari, potrebno je samo da se pozovemo na kod početne stranice wp-includes/query.php i da ga malo izmenimo, tako da vrh arhivske stranice (kao što je stranica kategorije, stranica kartice, stranica autora i stranica sa datumom ) također može prikazati gornji članak.

WordPress ljepljivi kod članka

Molimo stavite sljedeći kod u datoteku functions.php ispod vaše trenutne teme ▼

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

Upute za korištenje koda ljepljivog artikla

1) Ako želite da stranica arhive prikazuje sve top članke, izbrišite 11-43 reda koda;

2) Ako ne želite prikazati gornji članak na stranici kategorije, dodajte ▼ u red 3

if(

Izmijeni u ▼

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

3) Ako ne želite da se gornji članak prikaže na kartici, molimo ▼ u 3. redu

if(

promijeniti u:

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

4) Ako ne želite da stranica autora prikazuje gornji članak, molimo ▼ u redu 3

if(

Izmijeni u ▼

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

5) Ako ne želite da stranica prilagođene kategorije prikazuje gornji članak, stavite

if(

Promijenite u:

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

Gornji kod je važeći samo za glavnu petlju, ako koristite WP_Query ili query_posts da dobijete listu postova na stranici arhive i želite da prikažete zakačene postove na vrhu tih lista.

Možete izbrisati sljedeći kod u redu 3 (može uzrokovati da se broj prikazanih članaka razlikuje od onoga što ste postavili) ▼

|| !is_main_query() 

Dodajte stil u gornji članak

Ako želite da dodate stilove lepljivom postu, dodajte sledeći kod u functions.php i dodajte klasu pod nazivom sticky u lepljivu objavu.

U općim WordPress temama, postojat će CSS kod za vrhunski stil članka, možete dodati i prilagođeni ▼

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

Postoji još jedan način da navedete da stranice arhive WordPress kategorija prikazuju WordPress članke na vrhu▼

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) podijelio je "Kako natjerati WordPress kategoriju/oznaku/autorsku stranicu da prikazuje ljepljive članke? , da vam pomognem.

Dobrodošli da podijelite link ovog članka:https://www.chenweiliang.com/cwl-878.html

Dobrodošli na Telegram kanal bloga Chen Weilianga kako biste dobili najnovije informacije!

🔔 Budite prvi koji će dobiti vrijedan "Vodič za korištenje AI alata za marketing sadržaja ChatGPT" u glavnom direktoriju kanala! 🌟
📚 Ovaj vodič ima ogromnu vrijednost, 🌟Ovo je rijetka prilika, ne propustite je! ⏰⌛💨
Podelite i lajkujte ako želite!
Vaše dijeljenje i lajkovi su naša stalna motivacija!

 

Komentari

Vaša adresa e-pošte neće biti objavljena. Koriste se obavezna polja * Oznaka

skrolujte na vrh