Ahoana ny fomba hanaovana ny sokajy WordPress / tag / mpanoratra pejy mampiseho lahatsoratra miraikitra?

WordPressMisy endri-javatra namboarina mba hanindrona lahatsoratra amin'ny tampony, fa amin'ny alàlan'ny default dia tsy manohana afa-tsy ny fampisehoana lahatsoratra voapetaka ao amin'ny pejy fandraisana.

Pejy arsiva hafa (toy ny pejin'ny sokajy, pejin'ny marika, pejin'ny mpanoratra, ary pejin'ny daty) dia tsy afaka mampiseho lahatsoratra voatsindrona eo an-tampony ary tsy azo aseho amin'ny filaharana mahazatra ihany.

Betsaka ny atao amin'ny fampiasana WordPressSEOmanantena ny hamaha ireo olana ireo ny namana rehetra.

Ahoana ny fomba hanaovana ny sokajy WordPress / tag / mpanoratra pejy mampiseho lahatsoratra miraikitra?

Raha ny marina, mila manondro ny kaody an'ny wp-includes/query.php fotsiny isika ary manao fanovana kely mba hampisehoana lahatsoratra voapetaka eo an-tampon'ny pejin'ny tahiry (toy ny pejin'ny sokajy, pejin'ny tag, pejin'ny mpanoratra ary pejin'ny daty) .

Kaody lahatsoratra nopetahana WordPress

Apetraho ao amin'ny rakitra functions.php ity kaody manaraka ity eo ambanin'ny loha-hevitrao ankehitriny ▼

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

Torolàlana amin'ny fampiasana ny kaody lahatsoratra voapetaka

1) Raha tianao ny pejy arisiva hanehoana ireo lahatsoratra voapetaka rehetra dia vonoy azafady ny andalana 11-43 amin'ny kaody;

2) Raha tsy te-hampiseho lahatsoratra voapetaka amin'ny pejin'ny sokajy ianao dia ovay azafady ny ▼ amin'ny andalana faha-3

if(

Ovao ho ▼

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

3) Raha tsy tianao haseho eo amin'ny pejin'ny tabilao ilay lahatsoratra voapetaka dia tsindrio azafady ▼ eo amin'ny andalana faha-3

if(

miova ho:

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

4) Raha tsy tianao ny pejy mpanoratra hampiseho lahatsoratra voapetaka, tsindrio azafady ▼ amin'ny andalana 3

if(

Ovao ho ▼

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

5) Raha tsy tianao ny pejy sokajy mahazatra hanehoana lahatsoratra voapetaka, ovay ny

if(

Ovay ho:

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

Ny kaody etsy ambony dia tsy miasa afa-tsy ao amin'ny loop lehibe raha mampiasa WP_Query na query_posts ianao mba hahazoana lisitry ny lahatsoratra amin'ny pejin'ny arisiva ary te-hampiseho lahatsoratra voapetaka eo an-tampon'ireo lisitra ireo.

Azonao atao ny mamafa ity kaody manaraka ity amin'ny andalana faha-3 (mety hahatonga ny isan'ny lahatsoratra ho tsy mitovy amin'ny napetrakao) ▼

|| !is_main_query() 

Ampio fomba amin'ny lahatsoratra voatsindrona

Raha te-hanampy styles amin'ny lahatsoratra mipetaka ianao dia ampio ity code manaraka ity amin'ny functions.php ary ampio kilasy antsoina hoe sticky amin'ny lahatsoratra mipetaka.

Amin'ny ankapobeny, ny lohahevitry ny WordPress dia hanana kaody CSS ho an'ny endrika lahatsoratra voapetaka. Azonao atao ihany koa ny manampy fanamboarana manokana ▼

//置顶文章添加样式
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;
} 
  • Ny effet style amin'ny lahatsoratra voapetaka amin'ny pejin'ny sokajy,Chen WeiliangSokajy lahatsoratra bilaogy:laharana finday sinoa
  • (Lany daty ny fanovana ny lohahevitra)

Misy fomba iray hafa hanaovana ny pejy arisivan'ny sokajy WordPress hanehoana lahatsoratra WordPress eo ambony▼

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) nizara "Ahoana ny fomba hanaovana ny sokajy WordPress/tag/pejin'ny mpanoratra mampiseho lahatsoratra voapetaka? 》, manampy anao.

Tongasoa eto mizara ny rohy amin'ity lahatsoratra ity:https://www.chenweiliang.com/cwl-878.html

Tongasoa eto amin'ny fantsona Telegram an'ny bilaogin'i Chen Weiliang hahazoana vaovao farany!

🔔 Aoka ho voalohany hahazo ny "ChatGPT Content Marketing AI Tool Usage Guide" sarobidy ao amin'ny lahatahiry ambony fantsona! 🌟
📚 Ity torolalana ity dia misy sanda lehibe, 🌟Ity dia fotoana tsy fahita firy, aza adino! ⏰⌛💨
Partageo ary j'aime raha tianao!
Ny fizaranao sy ny j'aime no antony manosika anay hatrany!

 

Comments

Ny adiresy mailakao dia tsy havoaka. Ampiasaina ny saha ilaina * Label

horonana mankany ambony