Làm thế nào để làm cho danh mục / thẻ / trang tác giả của WordPress hiển thị các bài viết hấp dẫn?

WordPressCó một chức năng dính bài viết được tích hợp sẵn, nhưng mặc định chỉ có trang trên cùng mới được hỗ trợ để hiển thị các bài viết dính.

Các trang lưu trữ khác (chẳng hạn như trang danh mục, trang thẻ, trang tác giả và trang ngày tháng) không thể hiển thị các bài viết dính ở trên cùng, chỉ theo thứ tự mặc định.

nhiều thứ liên quan đến WordPressSEObạn bè, hy vọng để giải quyết những vấn đề này.

Làm thế nào để làm cho danh mục / thẻ / trang tác giả của WordPress hiển thị các bài viết hấp dẫn?

Trên thực tế, chúng ta chỉ cần tham khảo mã của trang chủ wp-include / query.php và sửa đổi nó một chút, sao cho ở đầu trang lưu trữ (chẳng hạn như trang danh mục, trang tab, trang tác giả và trang ngày tháng. ) cũng có thể hiển thị bài viết hàng đầu.

Mã bài viết dính WordPress

Vui lòng đặt mã sau vào tệp functions.php theo chủ đề hiện tại của bạn ▼

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

Hướng dẫn sử dụng mã bài viết dính

1) Nếu bạn muốn trang lưu trữ hiển thị tất cả các bài báo hàng đầu, vui lòng xóa 11-43 dòng mã;

2) Nếu bạn không muốn hiển thị bài viết hàng đầu trên trang chuyên mục, vui lòng thêm ▼ vào dòng 3

if(

Sửa đổi thành ▼

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

3) Nếu bạn không muốn hiển thị bài viết hàng đầu trên trang tab, vui lòng ▼ ở dòng 3

if(

đổi thành:

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

4) Nếu bạn không muốn trang tác giả hiển thị bài viết trên cùng, vui lòng ▼ ở dòng 3

if(

Sửa đổi thành ▼

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

5) Nếu bạn không muốn một trang danh mục tùy chỉnh hiển thị bài viết hàng đầu, hãy đặt

if(

Thay đổi nó thành:

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

Đoạn mã trên chỉ hợp lệ cho vòng lặp chính, nếu bạn đang sử dụng WP_Query hoặc query_posts để lấy danh sách các bài đăng trên trang lưu trữ và muốn hiển thị các bài viết được ghim trên đầu các danh sách đó.

Bạn có thể xóa đoạn mã sau ở dòng 3 (có thể khiến số lượng bài viết hiển thị khác với những gì bạn đặt) ▼

|| !is_main_query() 

Thêm phong cách vào bài viết hàng đầu

Nếu bạn muốn thêm kiểu vào bài đăng dính, hãy thêm mã sau vào functions.php và thêm một lớp có tên là dính vào bài đăng dính.

Trong các chủ đề WordPress nói chung, sẽ có mã CSS cho kiểu bài viết hàng đầu, bạn cũng có thể thêm tùy chỉnh ▼

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

Có một cách khác để làm cho các trang lưu trữ danh mục WordPress hiển thị các bài viết WordPress ở trên cùng ▼

Hy vọng Chen Weiliang Blog ( https://www.chenweiliang.com/ ) đã chia sẻ "Làm thế nào để làm cho trang danh mục / thẻ / tác giả của WordPress hiển thị các bài viết dính? , để giúp bạn.

Chào mừng bạn đến chia sẻ liên kết của bài viết này:https://www.chenweiliang.com/cwl-878.html

Chào mừng bạn đến với kênh Telegram trên blog của Chen Weiliang để cập nhật những thông tin mới nhất!

🔔 Hãy là người đầu tiên nhận được "Hướng dẫn sử dụng Công cụ AI tiếp thị nội dung ChatGPT" có giá trị trong thư mục trên cùng của kênh! 🌟
📚 Hướng dẫn này chứa đựng giá trị to lớn, 🌟Đây là cơ hội hiếm có, đừng bỏ lỡ! ⏰⌛💨
Chia sẻ và thích nếu bạn thích!
Chia sẻ và thích của bạn là động lực không ngừng của chúng tôi!

 

发表 评论

Địa chỉ email của bạn sẽ không được công bố. 项 已 * 标注

cuộn lên trên cùng