Hoe om WordPress-kategorie-/merker-/skrywerbladsy taai artikels te laat vertoon?

WordPress het 'n ingeboude funksie om plasings vas te pen, maar standaard vertoon dit slegs vasgepenne plasings op die tuisblad.

Ander argiefbladsye (soos kategoriebladsye, merkerbladsye, skrywersbladsye en datumbladsye) kan nie taai artikels boaan vertoon nie, net in die verstekvolgorde.

Baie mense wat WordPress vir SEO gebruik, hoop om hierdie probleme op te los.

Hoe om WordPress-kategorie-/merker-/skrywerbladsy taai artikels te laat vertoon?

Trouens, ons hoef net na die kode van die tuisblad van wp-includes/query.php te verwys en dit effens te verander, sodat die bokant van die argiefbladsy (soos kategoriebladsy, oortjiebladsy, skrywerbladsy en datumbladsy) ) kan ook die boonste artikel vertoon.

WordPress taai artikelkode

Plaas asseblief die volgende kode in die functions.php-lêer onder jou huidige tema ▼

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

Instruksies vir die gebruik van die kode van die taai artikel

1) As jy wil hê dat die argiefbladsy al die topartikels moet vertoon, verwyder asseblief die 11-43 reëls kode;

2) As jy nie die boonste artikel op die kategoriebladsy wil vertoon nie, voeg asseblief ▼ in reël 3 by

if(

Verander na ▼

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

3) As jy nie die boonste artikel op die bladbladsy wil vertoon nie, ▼ asseblief in reël 3

if(

verander in:

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

4) As jy nie wil hê dat die skrywersbladsy die boonste artikel moet vertoon nie, ▼ asseblief in reël 3

if(

Verander na ▼

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

5) As jy nie wil hê dat 'n pasgemaakte kategoriebladsy die boonste artikel moet vertoon nie, plaas die

if(

Verander dit na:

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

Bogenoemde kode is slegs geldig vir die hooflus, as jy WP_Query of query_posts gebruik om 'n lys plasings op die argiefbladsy te kry, en die vasgespelde plasings bo-aan daardie lyste wil vertoon.

Jy kan die volgende kode in reël 3 uitvee (kan veroorsaak dat die aantal artikels wat vertoon word verskil van wat jy gestel het) ▼

|| !is_main_query() 

Voeg styl by die boonste artikel

As jy style by die taai plasing wil voeg, voeg die volgende kode by functions.php en voeg 'n klas genaamd sticky by die taai plasing.

In die algemeen WordPress-temas, sal daar CSS-kode vir die top artikel styl wees, jy kan ook persoonlike ▼ byvoeg

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

Daar is nog 'n manier om WordPress-kategorie-argiefbladsye WordPress-artikels aan die bokant te laat vertoon▼

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Scroll na bo