Кантип 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 сайтына төмөнкү кодду кошуп, жабышчаак постко жабышчаак деген классты кошуңуз.

Жалпы 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 куралын колдонуу боюнча колдонмону" биринчилерден болуп алыңыз! 🌟
📚 Бул колдонмо чоң баалуулуктарды камтыйт, 🌟Бул сейрек кездешүүчү мүмкүнчүлүк, аны өткөрүп жибербеңиз! ⏰⌛💨
Бөлүшүп, жакса лайк!
Сиздин бөлүшүүңүз жана лайктарыңыз биздин үзгүлтүксүз мотивациябыз!

 

发表 评论

Электрондук почта дарегиңиз жарыяланбайт. Милдеттүү талаалар колдонулат * 标注

өйдө сыдырыңыз