Jak sprawić, by strona kategorii/tagu/autora WordPress wyświetlała przyklejone artykuły?

WordPressIstnieje wbudowana funkcja przyklejania artykułów, ale domyślnie tylko górna strona jest obsługiwana do wyświetlania przyklejonych artykułów.

Inne strony archiwalne (takie jak strony kategorii, strony tagów, strony autorów i strony dat) nie mogą wyświetlać przyklejonych artykułów u góry, tylko w domyślnej kolejności.

dużo wspólnego z WordPressSEOprzyjaciele, miej nadzieję na rozwiązanie tych problemów.

Jak sprawić, by strona kategorii/tagu/autora WordPress wyświetlała przyklejone artykuły?

W rzeczywistości wystarczy odwołać się do kodu strony głównej wp-includes/query.php i nieznacznie go zmodyfikować, aby górna część strony archiwum (taka jak strona kategorii, strona zakładki, strona autora i strona daty ) może również wyświetlać pierwszy artykuł.

Kod artykułu przyklejonego WordPress

Proszę umieścić następujący kod w pliku functions.php pod aktualnym motywem ▼

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

Instrukcje dotyczące korzystania z kodu przyklejonego artykułu

1) Jeśli chcesz, aby strona archiwum wyświetlała wszystkie najlepsze artykuły, usuń 11-43 wiersze kodu;

2) Jeśli nie chcesz wyświetlać topowego artykułu na stronie kategorii, dodaj ▼ w wierszu 3

if(

Zmień na ▼

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

3) Jeśli nie chcesz wyświetlać pierwszego artykułu na stronie zakładki, proszę ▼ w wierszu 3

if(

zmienić w:

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

4) Jeśli nie chcesz, aby strona autora wyświetlała pierwszy artykuł, proszę ▼ w wierszu 3

if(

Zmień na ▼

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

5) Jeśli nie chcesz, aby niestandardowa strona kategorii wyświetlała najlepszy artykuł, umieść

if(

Zmień to na:

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

Powyższy kod jest ważny tylko dla pętli głównej, jeśli używasz WP_Query lub query_posts, aby uzyskać listę postów na stronie archiwum i chcesz wyświetlić przypięte posty na górze tych list.

Możesz usunąć następujący kod w linii 3 (może spowodować, że liczba wyświetlanych artykułów będzie inna niż ustawiona) ▼

|| !is_main_query() 

Dodaj styl do górnego artykułu

Jeśli chcesz dodać style do przyklejonego wpisu, dodaj następujący kod do functions.php i dodaj klasę o nazwie sticky do przyklejonego wpisu.

W ogólnych motywach WordPress będzie kod CSS dla górnego stylu artykułu, możesz również dodać niestandardowe ▼

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

Istnieje inny sposób, aby strony archiwum kategorii WordPress wyświetlały artykuły WordPress na górze▼

Nadzieja Chen Weiliang Blog ( https://www.chenweiliang.com/ ) udostępniono „Jak sprawić, by strona kategorii/tagu/autora WordPress wyświetlała przyklejone artykuły? , pomóc Ci.

Zapraszamy do udostępnienia linku do tego artykułu:https://www.chenweiliang.com/cwl-878.html

Witamy na kanale Telegram bloga Chen Weiliang, aby uzyskać najnowsze aktualizacje!

🔔 Bądź pierwszą osobą, która otrzyma cenny „Przewodnik po użyciu narzędzia AI do marketingu treści ChatGPT” w głównym katalogu kanału! 🌟
📚 Ten przewodnik zawiera ogromną wartość, 🌟To rzadka okazja, nie przegap jej! ⏰⌛💨
Udostępnij i polub, jeśli chcesz!
Twoje udostępnianie i polubienia to nasza ciągła motywacja!

 

发表 评论

Twoj adres e-mail nie bedzie opublikowany. 必填 项 已 用 * 标注

przewiń na górę