¿Cómo hacer que la página de categoría/etiqueta/autor de WordPress muestre artículos pegajosos?

WordPressHay una función integrada de fijación de artículos, pero de forma predeterminada solo se admite la página superior para mostrar artículos fijos.

Otras páginas de archivo (como páginas de categorías, páginas de etiquetas, páginas de autores y páginas de fechas) no pueden mostrar artículos fijos en la parte superior, solo en el orden predeterminado.

mucho que ver con WordPressSEOamigos, espero resolver estos problemas.

¿Cómo hacer que la página de categoría/etiqueta/autor de WordPress muestre artículos pegajosos?

De hecho, solo necesitamos referirnos al código de la página de inicio de wp-includes/query.php y modificarlo ligeramente, de modo que la parte superior de la página de archivo (como la página de categoría, la página de pestaña, la página de autor y la página de fecha ) también puede mostrar el artículo superior.

Código de artículo fijo de WordPress

Coloque el siguiente código en el archivo functions.php debajo de su tema actual ▼

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

Instrucciones para usar el código del artículo adhesivo

1) Si desea que la página de archivo muestre todos los artículos principales, elimine las 11-43 líneas de código;

2) Si no desea mostrar el artículo principal en la página de categoría, agregue ▼ en la línea 3

if(

Modificar a ▼

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

3) Si no desea mostrar el artículo principal en la página de pestañas, ▼ en la línea 3

if(

cambie a:

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

4) Si no desea que la página del autor muestre el artículo principal, marque ▼ en la línea 3

if(

Modificar a ▼

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

5) Si no desea que una página de categoría personalizada muestre el artículo principal, coloque el

if(

cambiarlo a:

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

El código anterior solo es válido para el ciclo principal, si está utilizando WP_Query o query_posts para obtener una lista de publicaciones en la página de archivo y desea mostrar las publicaciones ancladas en la parte superior de esas listas.

Puede eliminar el siguiente código en la línea 3 (puede hacer que la cantidad de artículos que se muestran sea diferente de la que configuró) ▼

|| !is_main_query() 

Añadir estilo al artículo superior

Si desea agregar estilos a la publicación fija, agregue el siguiente código a functions.php y agregue una clase llamada Sticky a la publicación fija.

En los temas generales de WordPress, habrá un código CSS para el estilo del artículo principal, también puede agregar un ▼ personalizado

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

Hay otra forma de hacer que las páginas de archivo de categorías de WordPress muestren los artículos de WordPress en la parte superior▼

Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartió "¿Cómo hacer que la página de categoría/etiqueta/autor de WordPress muestre artículos pegajosos? , para ayudarte.

Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-878.html

¡Bienvenido al canal de Telegram del blog de Chen Weiliang para obtener las últimas actualizaciones!

🔔 ¡Sea el primero en obtener la valiosa "Guía de uso de la herramienta de inteligencia artificial para marketing de contenidos ChatGPT" en el directorio superior del canal! 🌟
📚 Esta guía contiene un gran valor. 🌟Esta es una oportunidad única, ¡no la pierdas! ⏰⌛💨
¡Comparte y dale me gusta si te gusta!
¡Su compartir y Me gusta son nuestra motivación continua!

 

发表 评论

Su dirección de correo electrónico no será publicada. 项 已 用 * 标注

滚动 到 顶部