WordPress kategori/etiket/yazar sayfasının yapışkan makaleler göstermesi nasıl sağlanır?

WordPressYerleşik bir makale yapıştırma işlevi vardır, ancak varsayılan olarak yapışkan makaleleri görüntülemek için yalnızca en üst sayfa desteklenir.

Diğer arşiv sayfaları (kategori sayfaları, etiket sayfaları, yazar sayfaları ve tarih sayfaları gibi) yapışkan makaleleri en üstte gösteremez, yalnızca varsayılan sırayla.

WordPress ile yapılacak çok şeySEOarkadaşlar, umarım bu sorunları çözersiniz.

WordPress kategori/etiket/yazar sayfasının yapışkan makaleler göstermesi nasıl sağlanır?

Aslında, wp-includes/query.php ana sayfasının koduna başvurmamız ve biraz değiştirmemiz gerekiyor, böylece arşiv sayfasının üst kısmı (kategori sayfası, sekme sayfası, yazar sayfası ve tarih sayfası gibi) ) ayrıca en iyi makaleyi görüntüleyebilir.

WordPress yapışkan makale kodu

Lütfen aşağıdaki kodu şu anki temanızın altındaki function.php dosyasına koyun ▼

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

Yapışkan makalenin kodunu kullanma talimatları

1) Arşiv sayfasının en iyi makalelerin tümünü görüntülemesini istiyorsanız, lütfen 11-43 satırlık kodu silin;

2) Kategori sayfasında en üstteki makaleyi görüntülemek istemiyorsanız, lütfen 3. satıra ▼ ekleyin.

if(

▼ olarak değiştir

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

3) Sekme sayfasında en üstteki makaleyi görüntülemek istemiyorsanız, lütfen 3. satırda ▼

if(

dönüşmek:

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

4) Yazar sayfasının en üstteki makaleyi görüntülemesini istemiyorsanız, lütfen 3. satırda ▼

if(

▼ olarak değiştir

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

5) En iyi makaleyi görüntülemek için özel bir kategori sayfası istemiyorsanız,

if(

Bunu şu şekilde değiştirin:

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

Arşiv sayfasındaki gönderilerin bir listesini almak için WP_Query veya query_posts kullanıyorsanız ve bu listelerin üstünde sabitlenmiş gönderileri görüntülemek istiyorsanız, yukarıdaki kod yalnızca ana döngü için geçerlidir.

3. satırdaki aşağıdaki kodu silebilirsiniz (görüntülenen makale sayısının ayarladığınızdan farklı olmasına neden olabilir) ▼

|| !is_main_query() 

En üstteki makaleye stil ekleyin

Yapışkan gönderiye stiller eklemek istiyorsanız, aşağıdaki kodu functions.php'ye ekleyin ve yapışkan gönderiye yapışkan adlı bir sınıf ekleyin.

Genel WordPress temalarında, en iyi makale stili için CSS kodu olacaktır, ayrıca özel ▼ ekleyebilirsiniz.

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

WordPress kategori arşiv sayfalarının en üstte WordPress makalelerini göstermesini sağlamanın başka bir yolu daha var▼

Umut Chen Weiliang Blogu ( https://www.chenweiliang.com/ ) paylaştı "WordPress kategorisi/etiketi/yazar sayfasının yapışkan makaleler göstermesi nasıl sağlanır? , sana yardım etmek için.

Bu makalenin bağlantısını paylaşmaya hoş geldiniz:https://www.chenweiliang.com/cwl-878.html

En son güncellemeleri almak için Chen Weiliang'ın blogunun Telegram kanalına hoş geldiniz!

🔔 Kanalın üst dizinindeki değerli "ChatGPT İçerik Pazarlama Yapay Zeka Aracı Kullanım Kılavuzunu" alan ilk kişi olun! 🌟
📚 Bu rehber çok büyük değer içeriyor, 🌟Bu nadir bir fırsat, kaçırmayın! ⏰⌛💨
İsterseniz paylaşın ve beğenin!
Paylaşımlarınız ve beğenileriniz bizim sürekli motivasyonumuz!

 

发表 评论

E-posta hesabınız yayımlanmayacak. 必填 项 已 用 * 标注

yukarı kaydır