Hoe maak je een WordPress categorie/tag/auteur pagina plakkerige artikelen?

WordPressEr is een ingebouwde functie voor het plakken van artikelen, maar standaard wordt alleen de bovenste pagina ondersteund om plakkerige artikelen weer te geven.

Andere archiefpagina's (zoals categoriepagina's, tagpagina's, auteurspagina's en datumpagina's) kunnen vastgezette artikelen niet bovenaan weergeven, alleen in de standaardvolgorde.

veel te maken met WordPressSEOvrienden, hoop deze problemen op te lossen.

Hoe maak je een WordPress categorie/tag/auteur pagina plakkerige artikelen?

In feite hoeven we alleen maar te verwijzen naar de code van de startpagina van wp-includes/query.php en deze enigszins aan te passen, zodat de bovenkant van de archiefpagina (zoals categoriepagina, tabbladpagina, auteurspagina en datumpagina ) kan ook het bovenste artikel weergeven.

WordPress Sticky Artikelcode

Plaats de volgende code in het bestand Functions.php onder je huidige thema ▼

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

Instructies voor het gebruik van de code van het plakartikel

1) Als u wilt dat de archiefpagina alle topartikelen weergeeft, verwijder dan de 11-43 regels code;

2) Als u het topartikel niet op de categoriepagina wilt weergeven, voeg dan ▼ toe in regel 3

if(

Wijzigen in

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

3) Als u het bovenste artikel niet op het tabblad wilt weergeven, in regel 3

if(

veranderen in:

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

4) Als u niet wilt dat de auteurspagina het bovenste artikel weergeeft, in regel 3

if(

Wijzigen in

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

5) Als u niet wilt dat een aangepaste categoriepagina het bovenste artikel weergeeft, plaatst u de

if(

Verander het in:

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

De bovenstaande code is alleen geldig voor de hoofdlus, als je WP_Query of query_posts gebruikt om een ​​lijst met berichten op de archiefpagina te krijgen en het vastgezette bericht bovenaan die lijsten wilt weergeven.

U kunt de volgende code in regel 3 verwijderen (kan ervoor zorgen dat het aantal weergegeven artikelen verschilt van wat u instelt) ▼

|| !is_main_query() 

Stijl toevoegen aan het topartikel

Als je stijlen aan het plakbericht wilt toevoegen, voeg je de volgende code toe aan functions.php en voeg je een klasse met de naam plakkerig toe aan het plakbericht.

Over het algemeen WordPress-thema's, er zal CSS-code zijn voor de topartikelstijl, u kunt ook aangepaste ▼ . toevoegen

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

Er is een andere manier om WordPress-categoriearchiefpagina's bovenaan WordPress-artikelen te laten zien▼

Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeeld "Hoe maak je een WordPress categorie/tag/auteur pagina plakkerige artikelen? , om je te helpen.

Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-878.html

Welkom op het Telegram-kanaal van Chen Weiliang's blog voor de laatste updates!

🔔 Wees de eerste die de waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in de bovenste kanaaldirectory ontvangt! 🌟
📚 Deze gids bevat enorme waarde, 🌟Dit is een zeldzame kans, mis hem niet! ⏰⌛💨
Deel en like als je wilt!
Uw delen en likes zijn onze voortdurende motivatie!

 

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

scroll naar boven