WordPress категори/шошго/зохиогчийн хуудсыг наалттай нийтлэлүүдийг хэрхэн харуулах вэ?

WordPressБаригдсан нийтлэл наах функц байдаг боловч анхдагч байдлаар зөвхөн дээд хуудсанд наалттай нийтлэлүүдийг харуулахыг дэмждэг.

Бусад архивын хуудсууд (категорийн хуудас, шошго хуудас, зохиогчийн хуудас, огнооны хуудас гэх мэт) наалттай нийтлэлийг дээд талд нь харуулах боломжгүй, зөвхөн үндсэн дарааллаар.

WordPress-тэй маш их холбоотойSEOнайзууд аа, эдгээр асуудлыг шийднэ гэж найдаж байна.

WordPress категори/шошго/зохиогчийн хуудсыг наалттай нийтлэлүүдийг хэрхэн харуулах вэ?

Үнэн хэрэгтээ, бид зөвхөн wp-includes/query.php-ийн нүүр хуудасны код руу хандаж, архивын хуудасны дээд талд (категорийн хуудас, таб хуудас, зохиогчийн хуудас, огнооны хуудас гэх мэт) бага зэрэг өөрчлөх хэрэгтэй. ) мөн дээд нийтлэлийг харуулах боломжтой.

WordPress-ийн наалттай нийтлэлийн код

Одоо байгаа сэдвийнхээ доор functions.php файлд дараах кодыг оруулна уу ▼

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

Наалттай нийтлэлийн кодыг ашиглах заавар

1) Хэрэв та архивын хуудсанд бүх шилдэг нийтлэлүүдийг харуулахыг хүсвэл 11-43 мөр кодыг устгана уу;

2) Хэрэв та ангиллын хуудсан дээрх шилдэг нийтлэлийг харуулахыг хүсэхгүй байгаа бол 3-р мөрөнд ▼ нэмнэ үү.

if(

▼ болгож өөрчлөх

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

3) Хэрэв та дээд нийтлэлийг таб хуудсан дээр харуулахыг хүсэхгүй байгаа бол 3-р мөрөнд ▼ гэж бичнэ үү.

if(

болгон өөрчлөх:

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

4) Хэрэв та зохиогчийн хуудасны дээд нийтлэлийг харуулахыг хүсэхгүй байгаа бол 3-р мөрөнд ▼ бичнэ үү

if(

▼ болгож өөрчлөх

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

5) Хэрэв та дээд нийтлэлийг тусгай ангиллын хуудас харуулахыг хүсэхгүй байгаа бол

if(

Үүнийг өөрчлөх:

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

Хэрэв та архивын хуудсан дээрх нийтлэлүүдийн жагсаалтыг авахын тулд WP_Query эсвэл query_posts ашиглаж байгаа бол дээрх код нь зөвхөн үндсэн циклд хүчинтэй.

Та 3-р мөрөнд байгаа дараах кодыг устгаж болно (харуулсан нийтлэлийн тоо таны тохируулснаас өөр байж болно) ▼

|| !is_main_query() 

Дээд талын нийтлэлд хэв маяг нэмнэ үү

Хэрэв та наалттай бичлэгт стиль нэмэхийг хүсвэл functions.php-д дараах кодыг нэмж, наалттай бичлэгт sticky нэртэй класс нэмнэ үү.

WordPress-ийн ерөнхий сэдвүүд нь шилдэг нийтлэлийн хэв маягийн CSS кодтой байх ба та захиалгат ▼ нэмж болно

//置顶文章添加样式
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 категорийн архивын хуудсууд дээр WordPress нийтлэлүүдийг харуулах өөр нэг арга бий▼

Hope Chen Weiliang блог ( https://www.chenweiliang.com/ ) хуваалцсан "WordPress-ын категори/шошго/зохиогчийн хуудсыг наалттай нийтлэлүүдийг хэрхэн харуулах вэ? , танд туслах.

Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-878.html

Чен Вэйляны блогын Telegram сувагт тавтай морил, хамгийн сүүлийн үеийн мэдээг аваарай!

🔔 Сувгийн шилдэг лавлахаас "ChatGPT Content Marketing AI Tool Usage Guide"-г хамгийн түрүүнд аваарай! 🌟
📚 Энэхүү гарын авлага нь асар их үнэ цэнийг агуулсан, 🌟Энэ бол ховор боломж, бүү алдаарай! ⏰⌛💨
Хэрэв танд таалагдвал лайк дарж, хуваалцаарай!
Таны хуваалцах, дуртай зүйл бол бидний байнгын урам зориг юм!

 

发表 评论

Таны имэйл хаяг нийтлэгдэхгүй. 必填 项 已 用 дээр ажиллаж байна * 标注

滚动 到 顶部