So pinnen Sie Archivseiten wie WordPress-Kategorien und -Tags oben an

藏色散人
Freigeben: 2019-12-28 09:52:26
Original
1977 Leute haben es durchsucht

So pinnen Sie Archivseiten wie WordPress-Kategorien und -Tags oben an

Wie hefte ich Archivseiten wie WordPress-Kategorien und -Tags oben an?

Das Beispiel in diesem Artikel beschreibt, wie Sie den oberen Rand von Archivseiten wie WordPress-Kategorien und -Tags erreichen. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Empfehlung: „WordPress-Tutorial

In WordPress kann standardmäßig nur die Homepage Artikel anheften Wenn wir /Tag und andere Archivseiten klassifizieren möchten, benötigen wir eine sekundäre Entwicklung.

Beziehen Sie sich nun auf den Code der oben angehefteten Homepage in wp-includes/. query.php. Mit einer geringfügigen Änderung können Sie festlegen, dass die Kategorieseite, die Tag-Seite und die Autorenseite auch angeheftete Artikel in ihrem Bereich oben anzeigen können, wie auf der Startseite

Der Code lautet wie folgt:

add_filter('the_posts', 'putStickyOnTop' ); 
function putStickyOnTop( $posts ) { 
if(is_home() || !is_main_query() || !is_archive()) 
return $posts; 
global $wp_query; 
$sticky_posts = get_option('sticky_posts'); 
if ( $wp_query->query_vars[&#39;paged&#39;] <= 1 && is_array($sticky_posts) && !emptyempty($sticky_posts) && !get_query_var(&#39;ignore_sticky_posts&#39;) ) { $stickies1 = get_posts( array( &#39;post__in&#39; => $sticky_posts ) ); 
foreach ( $stickies1 as $sticky_post1 ) { 
// 判断当前是否分类页 
if($wp_query->is_category == 1 && !has_category($wp_query->query_vars[&#39;cat&#39;], $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[&#39;tag&#39;], $sticky_post1->ID)) { 
// 去除不属于本标签的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_year == 1 && date_i18n(&#39;Y&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本年份的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_month == 1 && date_i18n(&#39;Ym&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本月份的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_day == 1 && date_i18n(&#39;Ymd&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本日期的文章 
$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[&#39;author&#39;]) { 
// 去除不属于本作者的文章 
$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 ( !emptyempty($sticky_posts) && !emptyempty($wp_query->query_vars[&#39;post__not_in&#39;] ) ) 
$sticky_posts = array_diff($sticky_posts, $wp_query->query_vars[&#39;post__not_in&#39;]); 
// Fetch sticky posts that weren&#39;t in the query results 
if ( !emptyempty($sticky_posts) ) { 
$stickies = get_posts( array( 
&#39;post__in&#39; => $sticky_posts, 
&#39;post_type&#39; => $wp_query->query_vars[&#39;post_type&#39;], 
&#39;post_status&#39; => &#39;publish&#39;, 
&#39;nopaging&#39; => true 
) ); 
foreach ( $stickies as $sticky_post ) { 
array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) ); 
$sticky_offset++; 
} 
} 
} 
return $posts; 
}
Nach dem Login kopieren

Codebeschreibung:

1. Wenn Sie möchten, dass alle angehefteten Artikel im Archiv angezeigt werden Seite, dann löschen Sie die Zeilen 11-43 des Codes.

2 Wenn Sie angeheftete Artikel nicht auf einer bestimmten Kategorieseite anzeigen möchten, ändern Sie den Code

in Zeile 3 folgt:

if( 
//改成: 
// abc是分类名称 
if ( is_category( &#39;abc&#39; ) ||
Nach dem Login kopieren

3. Wenn Sie nicht möchten, dass auf einer bestimmten Registerkarte angeheftete Artikel angezeigt werden, ändern Sie den Code in Zeile 3

Der Code lautet wie folgt:

if( 
//改成: 
// abc是标签名称 
if ( is_tag( &#39;abc&#39; ) ||
Nach dem Login kopieren

4. Wenn Sie nicht möchten, dass auf der Seite eines Autors angeheftete Artikel angezeigt werden, ändern Sie den

-Code in Zeile 3 wie folgt:

if( 
//改成: 
// abc是作者昵称 
if ( is_author( &#39;abc&#39; ) ||
Nach dem Login kopieren

5. Der obige Code gilt nur für die Hauptschleife gültig. Wenn Sie WP_Query oder query_posts auf der Archivseite verwenden, um die Artikelliste abzurufen, und wenn Sie angeheftete Artikel oben in diesen Listen anzeigen möchten, können Sie den folgenden Code in der dritten Codezeile löschen (Hinweis: Möglicherweise Dies führt dazu, dass die Anzahl der angezeigten Artikel geringer ist als Ihre Einstellungen sind unterschiedlich):

Der Code lautet wie folgt:

Der Code lautet wie folgt:

|| !is_main_query()
Nach dem Login kopieren

Eingeklebter Stil: Wenn Sie dem angehefteten Artikel Stil verleihen möchten, fügen Sie den folgenden Code zu den Funktionen .php hinzu. Dem oberen Artikel wird eine Klasse mit dem Namen sticky hinzugefügt, und der spezifische CSS-Code kann von Ihnen selbst angepasst werden:

The Der Code lautet wie folgt:

add_filter(&#39;post_class&#39;, &#39;addStickyClass&#39; ,10,3 ); 
function addStickyClass( $classes, $class, $post_id ){ 
if( is_sticky() && is_category() && !isset( $classes[&#39;sticky&#39;] ) ){ 
$classes[] = &#39;sticky&#39;; 
} 
return $classes; 
}
Nach dem Login kopieren

Ich hoffe, dieser Artikel wird für alle hilfreich seinWordPress-Website-Erstellunghilft.

Das obige ist der detaillierte Inhalt vonSo pinnen Sie Archivseiten wie WordPress-Kategorien und -Tags oben an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage