Jak zajistit, aby se na stránce kategorie/tag/autor na WordPressu zobrazovaly lepivé články?

WordPressK dispozici je vestavěná funkce lepení článků, ale ve výchozím nastavení je podporována pouze horní stránka pro zobrazení lepivých článků.

Jiné archivní stránky (jako jsou stránky kategorií, stránky se značkami, stránky autorů a stránky s datem) nemohou zobrazovat nalepené články nahoře, pouze ve výchozím pořadí.

hodně společného s WordPressemSEOpřátelé, doufám, že tyto problémy vyřešíte.

Jak zajistit, aby se na stránce kategorie/tag/autor na WordPressu zobrazovaly lepivé články?

Ve skutečnosti se musíme pouze odkázat na kód domovské stránky wp-includes/query.php a mírně jej upravit, aby horní část stránky archivu (jako je stránka kategorie, stránka se záložkou, stránka autora a stránka s datem ) může také zobrazit horní článek.

WordPress Sticky Article Code

Vložte prosím následující kód do souboru functions.php pod vaše aktuální téma ▼

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

Pokyny pro použití kódu lepivého článku

1) Pokud chcete, aby stránka archivu zobrazovala všechny nejlepší články, smažte 11-43 řádků kódu;

2) Pokud si nepřejete zobrazovat hlavní článek na stránce kategorie, přidejte prosím ▼ na řádek 3

if(

Upravit na ▼

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

3) Pokud si nepřejete zobrazovat horní článek na záložce, prosím ▼ na řádku 3

if(

změnit do:

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

4) Pokud si nepřejete, aby se na stránce autora zobrazoval hlavní článek, prosím ▼ na řádku 3

if(

Upravit na ▼

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

5) Pokud nechcete, aby se na stránce vlastní kategorie zobrazoval top článek, vložte

if(

Změňte to na:

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

Výše uvedený kód je platný pouze pro hlavní smyčku, pokud používáte WP_Query nebo query_posts k získání seznamu příspěvků na stránce archivu a chcete zobrazit připnutý příspěvek nad těmito seznamy.

Následující kód můžete smazat na řádku 3 (může způsobit, že se počet zobrazených článků bude lišit od vámi nastaveného počtu) ▼

|| !is_main_query() 

Přidejte styl do horního článku

Pokud chcete do lepivého příspěvku přidat styly, přidejte následující kód do functions.php a přidejte do lepivého příspěvku třídu s názvem sticky.

V obecných tématech WordPress bude pro styl horního článku kód CSS, můžete také přidat vlastní ▼

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

Existuje další způsob, jak zajistit, aby se na stránkách archivu kategorií WordPress zobrazovaly články WordPress nahoře▼

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared „Jak docílit toho, aby stránka kategorie/tag/autor na WordPressu zobrazovala lepkavé články? , pomoct ti.

Vítejte u sdílení odkazu na tento článek:https://www.chenweiliang.com/cwl-878.html

Vítejte na telegramovém kanálu blogu Chen Weiliang, kde získáte nejnovější aktualizace!

🔔 Buďte první, kdo získá cenný „Průvodce používáním nástroje AI pro obsahový marketing ChatGPT“ v hlavním adresáři kanálu! 🌟
📚 Tento průvodce má obrovskou hodnotu, 🌟Toto je vzácná příležitost, nenechte si ji ujít! ⏰⌛💨
Sdílejte a lajkujte, pokud se vám líbí!
Vaše sdílení a lajky jsou naší neustálou motivací!

 

发表 评论

Vaše e-mailová adresa nebude zveřejněna. 必填 项 已 用 * 标注

滚动 到 顶部