Kaip padaryti, kad „WordPress“ kategorijos / žymos / autoriaus puslapyje būtų rodomi lipnūs straipsniai?

WordPressYra integruota funkcija prisegti straipsnius viršuje, tačiau pagal numatytuosius nustatymus ji palaiko tik prisegtų straipsnių rodymą pagrindiniame puslapyje.

Kituose archyvo puslapiuose (pvz., kategorijų puslapiuose, žymų puslapiuose, autoriaus puslapiuose ir datos puslapiuose) negalima rodyti prisegtų straipsnių viršuje ir jie gali būti rodomi tik numatyta tvarka.

Daug nuveikta naudojant WordPressSEOvisi draugai tikisi išspręsti šias problemas.

Kaip padaryti, kad „WordPress“ kategorijos / žymos / autoriaus puslapyje būtų rodomi lipnūs straipsniai?

Tiesą sakant, mums tereikia kreiptis į wp-includes/query.php pagrindinio puslapio kodą ir atlikti nedidelius pakeitimus, kad prisegti straipsniai būtų rodomi archyvo puslapių viršuje (pvz., kategorijų puslapiai, žymų puslapiai, autoriaus puslapiai ir datos puslapiai). .

„WordPress“ prisegtas straipsnio kodas

Įdėkite šį kodą į functions.php failą prie dabartinės temos ▼

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

Prisegto straipsnio kodo naudojimo instrukcijos

1) Jei norite, kad archyvo puslapyje būtų rodomi visi prisegti straipsniai, ištrinkite 11-43 kodo eilutes;

2) Jei nenorite, kad kategorijos puslapyje būtų rodomi prisegti straipsniai, pakeiskite ▼ 3 eilutėje

if(

Keisti į ▼

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

3) Jei nenorite, kad prisegtas straipsnis būtų rodomas skirtuko puslapyje, spustelėkite ▼ 3 eilutėje

if(

pakeisti į:

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

4) Jei nenorite, kad autoriaus puslapyje būtų rodomi prisegti straipsniai, spustelėkite ▼ 3 eilutėje

if(

Keisti į ▼

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

5) Jei nenorite, kad tinkintos kategorijos puslapyje būtų rodomi prisegti straipsniai, pakeiskite

if(

Pakeisti į:

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

Aukščiau pateiktas kodas veikia tik pagrindinėje kilpoje, jei naudojate WP_Query arba query_posts, kad gautumėte įrašų sąrašą archyvo puslapiuose ir norite rodyti prisegtus įrašus šių sąrašų viršuje.

Galite ištrinti šį kodą 3 eilutėje (dėl to rodomų straipsnių skaičius gali skirtis nuo jūsų nustatyto) ▼

|| !is_main_query() 

Pridėkite stilių prie prisegtų straipsnių

Jei norite pridėti stilių į priklijuotą straipsnį, pridėkite šį kodą į functions.php ir pridėkite klasę pavadinimu lipnus straipsnis.

Paprastai „WordPress“ temos turi CSS kodą, skirtą prisegtų straipsnių stiliams. Taip pat galite patys pridėti tinkinimų ▼

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

Yra dar vienas būdas priversti „WordPress“ kategorijos archyvo puslapį rodyti „WordPress“ straipsnius viršuje▼

Hope Chen Weiliang tinklaraštis ( https://www.chenweiliang.com/ ) pasidalino „Kaip padaryti, kad WordPress kategorijos/žymos/autorio puslapyje būtų rodomi prisegti straipsniai? 》, tau naudinga.

Kviečiame pasidalinti šio straipsnio nuoroda:https://www.chenweiliang.com/cwl-878.html

Sveiki atvykę į Chen Weiliang tinklaraščio Telegram kanalą, kad gautumėte naujausius atnaujinimus!

🔔 Būkite pirmas, kuris kanalo viršaus kataloge gaus vertingą „ChatGPT turinio rinkodaros AI įrankio naudojimo vadovą“! 🌟
📚 Šis vadovas turi didžiulę vertę, 🌟Tai reta galimybė, nepraleiskite jos! ⏰⌛💨
Dalinkitės ir like jei patiko!
Jūsų dalijimasis ir paspaudimai „Patinka“ yra mūsų nuolatinė motyvacija!

 

发表 评论

Jūsų el. Pašto adresas nebus paskelbtas. Naudojami privalomi laukai * Etiketė

slinkite į viršų