איך לגרום לקטגוריה/תג/דף מחבר וורדפרס להציג מאמרים דביקים?

וורדפרסישנה פונקציית הדבקת מאמרים מובנית, אך כברירת מחדל רק העמוד העליון נתמך להצגת מאמרים דביקים.

דפי ארכיון אחרים (כגון דפי קטגוריות, דפי תגים, דפי מחבר ודפי תאריך) אינם יכולים להציג מאמרים דביקים בראש, רק בסדר ברירת המחדל.

הרבה לעשות עם וורדפרסקידום אתריםחברים, מקווים לפתור את הבעיות הללו.

איך לגרום לקטגוריה/תג/דף מחבר וורדפרס להציג מאמרים דביקים?

למעשה, אנחנו צריכים רק להתייחס לקוד של דף הבית של wp-includes/query.php ולשנות אותו מעט, כך שהחלק העליון של עמוד הארכיון (כגון דף קטגוריה, דף כרטיסייה, דף מחבר ודף תאריך) ) יכול גם להציג את המאמר העליון.

קוד מאמר דביק של וורדפרס

אנא הכנס את הקוד הבא בקובץ functions.php תחת הנושא הנוכחי שלך ▼

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

הוראות שימוש בקוד של המאמר הדביק

1) אם אתה רוצה שדף הארכיון יציג את כל המאמרים המובילים, נא למחוק את 11-43 שורות הקוד;

2) אם אינך רוצה להציג את המאמר העליון בדף הקטגוריה, אנא הוסף ▼ בשורה 3

if(

שנה ל-▼

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

3) אם אינך רוצה להציג את המאמר העליון בדף הכרטיסייה, אנא ▼ בשורה 3

if(

לשנות ל:

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

4) אם אינך רוצה שדף המחבר יציג את המאמר העליון, אנא ▼ בשורה 3

if(

שנה ל-▼

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

5) אם אינך רוצה שדף קטגוריה מותאם אישית יציג את המאמר העליון, שים את ה

if(

שנה את זה ל:

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

הקוד לעיל תקף רק עבור הלולאה הראשית, אם אתה משתמש ב-WP_Query או query_posts כדי לקבל רשימה של פוסטים בדף הארכיון, וברצונך להציג את הפוסט המוצמד על גבי הרשימות הללו.

אתה יכול למחוק את הקוד הבא בשורה 3 (עלול לגרום למספר המאמרים המוצגים להיות שונה ממה שהגדרת) ▼

|| !is_main_query() 

הוסף סגנון למאמר העליון

אם אתה רוצה להוסיף סגנונות לפוסט הדביק, הוסף את הקוד הבא ל-functions.php והוסף מחלקה בשם sticky לפוסט הדביק.

נושאים כלליים של וורדפרס יהיו בעלי קוד CSS של סגנון המאמר העליון, אתה יכול גם להוסיף ▼ מותאם אישית

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

יש דרך נוספת לגרום לדפי ארכיון של קטגוריות וורדפרס להציג מאמרי וורדפרס בראש ▼

Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) משותף "כיצד לגרום לקטגוריה/תג/דף מחבר וורדפרס להציג מאמרים דביקים? , לעזור לך.

מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-878.html

ברוכים הבאים לערוץ הטלגרם של הבלוג של Chen Weiliang כדי לקבל את העדכונים האחרונים!

🔔 היה הראשון לקבל את "מדריך השימוש בכלי AI של ChatGPT Content Marketing" בספרייה העליונה של הערוץ! 🌟
📚 המדריך הזה מכיל ערך עצום, 🌟זו הזדמנות נדירה, אל תפספסו אותה! ⏰⌛💨
שתפו ותעשו לייק אם בא לכם!
השיתוף והלייקים שלך הם המוטיבציה המתמשכת שלנו!

 

发表 评论

כתובת האימייל שלך לא תפורסם. 必填 项 已 用 * תווית

גלול למעלה