Bagaimana cara membuat halaman kategori/tag/penulis WordPress menampilkan artikel yang lengket?

WordPressAda fungsi menempel artikel bawaan, tetapi secara default hanya halaman atas yang didukung untuk menampilkan artikel lengket.

Halaman arsip lainnya (seperti halaman kategori, halaman tag, halaman penulis, dan halaman tanggal) tidak dapat menampilkan artikel yang disematkan di bagian atas, hanya dalam urutan default.

banyak hubungannya dengan WordPressSEOteman-teman, berharap untuk memecahkan masalah ini.

Bagaimana cara membuat halaman kategori/tag/penulis WordPress menampilkan artikel yang lengket?

Sebenarnya, kita hanya perlu mengacu pada kode halaman beranda wp-include/query.php dan memodifikasinya sedikit, sehingga bagian atas halaman arsip (seperti halaman kategori, halaman tab, halaman penulis dan halaman tanggal ) juga dapat menampilkan artikel teratas.

Kode Artikel Lengket WordPress

Silakan masukkan kode berikut di file functions.php di bawah tema Anda saat ini

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

Petunjuk penggunaan kode artikel tempel

1) Jika Anda ingin halaman arsip menampilkan semua artikel teratas, harap hapus 11-43 baris kode;

2) Jika Anda tidak ingin menampilkan artikel teratas pada halaman kategori, tambahkan pada baris 3

if(

Ubah menjadi

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

3) Jika Anda tidak ingin menampilkan artikel teratas di halaman tab, silakan di baris 3

if(

berubah menjadi:

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

4) Jika Anda tidak ingin halaman penulis menampilkan artikel teratas, silakan di baris 3

if(

Ubah menjadi

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

5) Jika Anda tidak ingin halaman kategori khusus menampilkan artikel teratas, masukkan

if(

Ubah ke:

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

Kode di atas hanya berlaku untuk loop utama, jika Anda menggunakan WP_Query atau query_posts untuk mendapatkan daftar posting di halaman arsip, dan ingin menampilkan posting yang disematkan di atas daftar tersebut.

Anda dapat menghapus kode berikut pada baris 3 (dapat menyebabkan jumlah artikel yang ditampilkan berbeda dari yang Anda tetapkan)

|| !is_main_query() 

Tambahkan gaya ke artikel teratas

Jika Anda ingin menambahkan gaya ke sticky post, tambahkan kode berikut ke functions.php dan tambahkan kelas bernama sticky ke sticky post.

Tema WordPress umum akan memiliki kode CSS dari gaya artikel teratas, Anda juga dapat menambahkan . khusus

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

Ada cara lain untuk membuat halaman arsip kategori WordPress menampilkan artikel WordPress di bagian atas▼

Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ ) berbagi "Bagaimana cara membuat halaman kategori/tag/penulis WordPress menampilkan artikel yang lengket? , untuk membantumu.

Selamat datang untuk membagikan tautan artikel ini:https://www.chenweiliang.com/cwl-878.html

Selamat datang di saluran Telegram blog Chen Weiliang untuk mendapatkan pembaruan terkini!

🔔 Jadilah orang pertama yang mendapatkan "Panduan Penggunaan Alat AI Pemasaran Konten ChatGPT" yang berharga di direktori teratas saluran! 🌟
📚 Panduan ini mengandung nilai yang sangat besar, 🌟Ini adalah kesempatan langka, jangan sampai terlewatkan! ⏰⌛💨
Bagikan dan sukai jika Anda suka!
Berbagi dan suka Anda adalah motivasi berkelanjutan kami!

 

发表 评论

Alamat email Anda tidak akan dipublikasikan. 必填 项 已 用 * 标注

滚动 到 顶部