Comment faire en sorte que la page de catégorie/tag/auteur de WordPress affiche des articles collants ?

Outils de gestionIl existe une fonction de collage d'articles intégrée, mais par défaut, seule la première page est prise en charge pour afficher les articles collants.

Les autres pages d'archives (telles que les pages de catégorie, les pages de balises, les pages d'auteur et les pages de date) ne peuvent pas afficher les articles collants en haut, uniquement dans l'ordre par défaut.

beaucoup à voir avec WordPressSEOamis, espérons résoudre ces problèmes.

Comment faire en sorte que la page de catégorie/tag/auteur de WordPress affiche des articles collants ?

En fait, il suffit de se référer au code de la page d'accueil de wp-includes/query.php et de le modifier légèrement, de sorte que le haut de la page d'archive (comme la page de catégorie, la page d'onglet, la page d'auteur et la page de date ) peut également afficher le premier article.

Code d'article collant WordPress

Veuillez mettre le code suivant dans le fichier functions.php sous votre thème actuel ▼

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

Instructions pour utiliser le code de l'article collant

1) Si vous souhaitez que la page d'archives affiche tous les meilleurs articles, veuillez supprimer les 11 à 43 lignes de code ;

2) Si vous ne souhaitez pas afficher le premier article sur la page de catégorie, veuillez ajouter ▼ à la ligne 3

if(

Modifier en ▼

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

3) Si vous ne souhaitez pas afficher le premier article sur la page à onglet, veuillez ▼ à la ligne 3

if(

Changer en:

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

4) Si vous ne souhaitez pas que la page auteur affiche le premier article, veuillez ▼ à la ligne 3

if(

Modifier en ▼

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

5) Si vous ne voulez pas qu'une page de catégorie personnalisée affiche le premier article, mettez le

if(

Changez-le en :

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

Le code ci-dessus n'est valide que pour la boucle principale, si vous utilisez WP_Query ou query_posts pour obtenir une liste des publications sur la page d'archive et que vous souhaitez afficher la publication épinglée en haut de ces listes.

Vous pouvez supprimer le code suivant à la ligne 3 (peut faire en sorte que le nombre d'articles affichés soit différent de celui que vous avez défini) ▼

|| !is_main_query() 

Ajouter du style au premier article

Si vous souhaitez ajouter des styles au post collant, ajoutez le code suivant à functions.php et ajoutez une classe nommée sticky au post collant.

Dans les thèmes WordPress généraux, il y aura du code CSS pour le style d'article supérieur, vous pouvez également ajouter un ▼ personnalisé

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

Il existe un autre moyen de faire en sorte que les pages d'archives de catégories WordPress affichent les articles WordPress en haut▼

J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) partagé "Comment faire en sorte que la page de catégorie/tag/auteur WordPress affiche des articles collants ? , pour vous aider.

Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-878.html

Bienvenue sur la chaîne Telegram du blog de Chen Weiliang pour obtenir les dernières mises à jour !

🔔 Soyez le premier à obtenir le précieux « Guide d'utilisation de l'outil d'IA de marketing de contenu ChatGPT » dans le répertoire supérieur de la chaîne ! 🌟
📚 Ce guide contient une valeur énorme, 🌟C'est une opportunité rare, ne la manquez pas ! ⏰⌛💨
Partagez et likez si vous aimez !
Vos partages et likes sont notre motivation continue !

 

发表 评论

Votre adresse email ne sera pas publiée. 项 已 用 * 标注

到 顶部