Meriv çawa kategorî/tag/rûpela nivîskarê WordPress-ê gotarên pêgirtî nîşan dide?

WordPressFonksiyonek lêvekirina gotarek çêkirî heye, lê ji hêla xwerû ve tenê rûpela jorîn tê piştgirî kirin da ku gotarên asê nîşan bide.

Rûpelên arşîvê yên din (wekî rûpelên kategoriyê, rûpelên etîketan, rûpelên nivîskar û rûpelên tarîxê) nikarin gotarên pînekirî li jorê nîşan bidin, tenê bi rêza xwerû.

gelek tişt bi WordPress re dikinSEOhevalno, hêvîdarim van pirsgirêkan çareser bikin.

Meriv çawa kategorî/tag/rûpela nivîskarê WordPress-ê gotarên pêgirtî nîşan dide?

Bi rastî, pêdivî ye ku em tenê koda rûpela malê ya wp-includes/query.php binihêrin û wê hinekî biguhezînin, da ku serê rûpelê arşîvê (wek rûpela kategoriyê, rûpela tabloyê, rûpela nivîskar û rûpela tarîxê ) dikare gotara jorîn jî nîşan bide.

Koda Gotara Asê ya WordPress

Ji kerema xwe koda jêrîn têxe pelê functions.php di bin mijara xwe ya niha de ▼

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

Talîmatên ji bo karanîna koda gotara asê

1) Heke hûn dixwazin rûpela arşîvê hemî gotarên jorîn nîşan bide, ji kerema xwe 11-43 rêzikên kodê jêbirin;

2) Heke hûn naxwazin gotara jorîn li ser rûpelê kategoriyê nîşan bidin, ji kerema xwe ▼ di rêza 3 de zêde bikin

if(

Biguherîne bo ▼

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

3) Heke hûn nexwazin gotara jorîn li ser rûpela tabê nîşan bidin, ji kerema xwe ▼ di rêza 3 de

if(

biguherîne:

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

4) Heke hûn naxwazin rûpela nivîskarê gotara jorîn nîşan bide, ji kerema xwe ▼ di rêza 3 de

if(

Biguherîne bo ▼

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

5) Heke hûn nexwazin ku rûpelek kategoriya xwerû ku gotara jorîn nîşan bide, lê bidin

if(

Wê biguherînin:

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

Koda jorîn tenê ji bo lûleya sereke derbasdar e, heke hûn WP_Query an query_posts bikar tînin da ku navnîşek mesajan li ser rûpela arşîvê bistînin, û dixwazin posta pînekirî li ser wan navnîşan nîşan bidin.

Hûn dikarin di rêza 3-ê de koda jêrîn jêbikin (dibe ku hejmara gotarên ku têne xuyang kirin ji ya ku we destnîşan kirine cûda be) ▼

|| !is_main_query() 

Style li gotara jorîn zêde bikin

Heke hûn dixwazin şêwazê li posta asê zêde bikin, koda jêrîn li functions.php zêde bikin û çînek bi navê sticky li posta asê zêde bikin.

Di mijarên gelemperî yên WordPress de, dê koda CSS-ê ji bo şêwaza gotara jorîn hebe, hûn dikarin ▼ xwerû jî lê zêde bikin

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

Rêbazek din heye ku hûn rûpelên arşîva kategoriya WordPress-ê gotarên WordPress-ê li jorê▼ nîşan bidin

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) parve kir " Meriv çawa kategorî / etîket / rûpela nivîskarê WordPress gotarên asê nîşan dide? , ji bo alîkariya we.

Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-878.html

Hûn bi xêr hatin kanala Telegramê ya bloga Chen Weiliang da ku nûvekirinên herî dawî bistînin!

🔔 Bibin yê yekem ku di pelrêça jorîn a kanalê de "Rêbernameya Bikaranîna Amûra AI-ya Kirrûbirra Naveroka ChatGPT" ya bi qîmet bistîne! 🌟
📚 Ev rêber nirxek pir mezin dihewîne, 🌟Ev derfetek kêm e, wê ji dest nede! ⏰⌛💨
Heke hûn hez dikin parve bikin û hez bikin!
Parvekirin û ecibandinên we motîvasyona meya domdar e!

 

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

li jor bigerin