Како да направите страницата за категорија/ознака/автор на WordPress да прикажува лепливи написи?

WordPressИма вградена функција за прикачување на статии на врвот, но стандардно поддржува само прикажување на закачени статии на почетната страница.

Другите архивски страници (како страници со категории, страници со ознаки, страници со автори и страници со датум) не можат да прикажуваат закачени статии на врвот и може да се прикажат само во стандардниот редослед.

Многу е направено со користење на WordPressОптимизацијаСите пријатели се надеваат дека ќе ги решат овие проблеми.

Како да направите страницата за категорија/ознака/автор на 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

Добредојдовте на Телеграмскиот канал на блогот на Чен Веилијанг за да ги добиете најновите ажурирања!

🔔 Бидете први што ќе го добиете вредниот „Водич за употреба на алатката за AI за маркетинг на содржина на ChatGPT“ во горниот директориум на каналот! 🌟
📚 Овој водич содржи огромна вредност, 🌟Ова е ретка можност, не ја пропуштајте! ⏰⌛💨
Споделете и лајкнете ако ви се допаѓа!
Вашето споделување и лајкови се наша континуирана мотивација!

 

评论

Вашата адреса за е-пошта нема да биде објавена. Се користат задолжителните полиња * Етикета

скролувајте до врвот