Bagaimana untuk menjadikan halaman kategori/tag/pengarang WordPress menunjukkan artikel melekit?

WordPressTerdapat fungsi melekat artikel terbina dalam, tetapi secara lalai hanya halaman teratas disokong untuk memaparkan artikel melekit.

Halaman arkib lain (seperti halaman kategori, halaman teg, halaman pengarang dan halaman tarikh) tidak boleh memaparkan artikel melekit di bahagian atas, hanya dalam susunan lalai.

banyak kena mengena dengan WordPressSEOkawan-kawan, harap dapat menyelesaikan masalah ini.

Bagaimana untuk menjadikan halaman kategori/tag/pengarang WordPress menunjukkan artikel melekit?

Sebenarnya, kita hanya perlu merujuk kepada kod halaman utama wp-includes/query.php dan mengubah suainya sedikit, supaya bahagian atas halaman arkib (seperti halaman kategori, halaman tab, halaman pengarang dan halaman tarikh ) juga boleh memaparkan artikel teratas.

Kod artikel melekit WordPress

Sila letakkan kod berikut dalam fail functions.php di bawah tema semasa anda ▼

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

Arahan untuk menggunakan kod artikel melekit

1) Jika anda mahu halaman arkib memaparkan semua artikel teratas, sila padamkan 11-43 baris kod;

2) Jika anda tidak mahu memaparkan artikel teratas pada halaman kategori, sila tambah ▼ dalam baris 3

if(

Ubah suai kepada ▼

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

3) Jika anda tidak mahu memaparkan artikel teratas pada halaman tab, sila ▼ di baris 3

if(

tukar kepada:

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

4) Jika anda tidak mahu halaman pengarang memaparkan artikel teratas, sila ▼ di baris 3

if(

Ubah suai kepada ▼

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

5) Jika anda tidak mahu halaman kategori tersuai untuk memaparkan artikel teratas, letakkan

if(

Tukar kepada:

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

Kod di atas hanya sah untuk gelung utama, jika anda menggunakan WP_Query atau query_posts untuk mendapatkan senarai catatan pada halaman arkib dan ingin memaparkan siaran yang disematkan di atas senarai tersebut.

Anda boleh memadamkan kod berikut dalam baris 3 (boleh menyebabkan bilangan artikel yang dipaparkan berbeza daripada yang anda tetapkan) ▼

|| !is_main_query() 

Tambahkan gaya pada artikel teratas

Jika anda ingin menambah gaya pada siaran melekit, tambahkan kod berikut pada functions.php dan tambahkan kelas bernama sticky pada catatan melekit.

Tema WordPress umum akan mempunyai kod CSS gaya artikel teratas, anda juga boleh menambah ▼ tersuai

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

Terdapat satu lagi cara untuk menjadikan halaman arkib kategori WordPress menunjukkan artikel WordPress di bahagian atas▼

Blog Harapan Chen Weiliang ( https://www.chenweiliang.com/ ) berkongsi "Bagaimana untuk menjadikan kategori/tag/halaman pengarang WordPress menunjukkan artikel melekit? , untuk membantu anda.

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

Selamat datang ke saluran Telegram blog Chen Weiliang untuk mendapatkan kemas kini terkini!

🔔 Jadilah yang pertama untuk mendapatkan "Panduan Penggunaan Alat AI Pemasaran Kandungan ChatGPT" yang berharga dalam direktori teratas saluran! 🌟
📚 Panduan ini mengandungi nilai yang besar, 🌟Ini adalah peluang yang jarang berlaku, jangan lepaskan! ⏰⌛💨
Share dan like jika anda suka!
Perkongsian dan suka anda adalah motivasi berterusan kami!

 

发表 评论

Alamat e-mel anda tidak akan diterbitkan. 必填 项 已 用 * 标注

tatal ke atas