Kako natjerati WordPress kategoriju/oznaku/autor da prikazuje ljepljive članke?

WordPress ima ugrađenu funkciju za pinovanje objava, ali po defaultu prikazuje samo pinovane objave na početnoj stranici.

Druge arhivske stranice (kao što su stranice kategorija, stranice sa oznakama, stranice autora i stranice sa datumima) ne mogu prikazati zakačene članke na vrhu, samo prema zadanom redoslijedu.

Mnogi ljudi koji koriste WordPress za SEO nadaju se da će riješiti ove probleme.

Kako natjerati WordPress kategoriju/oznaku/autor da prikazuje ljepljive članke?

U stvari, potrebno je samo da se pozovemo na kod početne stranice wp-includes/query.php i da ga malo izmenimo, tako da vrh arhivske stranice (kao što je stranica kategorije, stranica kartice, stranica autora i stranica sa datumom ) također može prikazati gornji članak.

WordPress ljepljivi kod članka

Molimo stavite sljedeći kod u datoteku functions.php ispod vaše trenutne teme ▼

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

Upute za korištenje koda ljepljivog artikla

1) Ako želite da stranica arhive prikazuje sve top članke, izbrišite 11-43 reda koda;

2) Ako ne želite prikazati gornji članak na stranici kategorije, dodajte ▼ u red 3

if(

Izmijeni u ▼

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

3) Ako ne želite da se gornji članak prikaže na kartici, molimo ▼ u 3. redu

if(

promijeniti u:

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

4) Ako ne želite da stranica autora prikazuje gornji članak, molimo ▼ u redu 3

if(

Izmijeni u ▼

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

5) Ako ne želite da stranica prilagođene kategorije prikazuje gornji članak, stavite

if(

Promijenite u:

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

Gornji kod je važeći samo za glavnu petlju, ako koristite WP_Query ili query_posts da dobijete listu postova na stranici arhive i želite da prikažete zakačene postove na vrhu tih lista.

Možete izbrisati sljedeći kod u redu 3 (može uzrokovati da se broj prikazanih članaka razlikuje od onoga što ste postavili) ▼

|| !is_main_query() 

Dodajte stil u gornji članak

Ako želite da dodate stilove lepljivom postu, dodajte sledeći kod u functions.php i dodajte klasu pod nazivom sticky u lepljivu objavu.

U općim WordPress temama, postojat će CSS kod za vrhunski stil članka, možete dodati i prilagođeni ▼

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

Postoji još jedan način da navedete da stranice arhive WordPress kategorija prikazuju WordPress članke na vrhu▼

Komentari

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

Dođite na vrh