默认 WordPress 仅在首页显示置顶文章,如想在分类档案页面显示该分类置顶文章,可以尝试使用下面的代码。将代码添加到当前主题函数模板 functions.php 中:
- class StickyInCategory {
- /**
- * A reference to an instance of this class.
- */
- private static $instance;
- /**
- * The array of categories that will have sticky posts moved to the top.
- */
- protected $categories;
- /**
- * Returns an instance of this class.
- */
- public static function get_instance() {
- if ( null == self::$instance ) {
- self::$instance = new StickyInCategory();
- }
- return self::$instance;
- }
- /**
- * Initializes the plugin by setting filters and administration functions.
- */
- private function __construct() {
- $this->categories = array();
- // Filter retrieved posts
- add_filter( 'the_posts', array( $this, 'prepend_sticky_posts' ), 10, 2 );
- // Set the 'sticky' class
- add_filter( 'post_class', array( $this, 'set_sticky_post_class' ), 10, 3 );
- }
- /**
- * Move sticky posts to the top of the archive listing.
- */
- public function prepend_sticky_posts( $posts, $query ) {
- if ( !is_admin() && is_main_query() ) {
- // Hook to initialise the categories if none specified.
- if ( empty( $this->categories ) ) {
- $this->categories = apply_filters( 'sia_sticky_categories', $this->categories );
- }
- // Only continue if we are viewing a category archive.
- if ( array_key_exists( 'category_name', $query->query_vars ) ) {
- $category_matched = false;
- if ( empty( $this->categories ) ) {
- // If no categories were supplied by the apply_filters() then operate on all categories.
- $category_matched = true;
- }
- else {
- // Check whether the current category is in the list.
- $category_matched = in_array( $query->query_vars['category_name'], $this->categories );
- }
- if ( $category_matched ) {
- // Copied from the bottom of WP_Query::get_posts() in wp-includes/class-wp-query.php
- $sticky_posts = get_option( 'sticky_posts' );
- $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 ] );
- }
- }
- }
- }
- }
- return $posts;
- }
- /**
- * Set the 'sticky' post class. get_post_class() only does it on the home page.
- */
- public function set_sticky_post_class( $classes, $class, $post_ID ) {
- // TODO: Consider whether to reference $this->categories.
- if ( is_archive() && is_sticky( $post_ID ) ) {
- $classes[] = 'sticky';
- }
- return $classes;
- }
- }
- add_action( 'after_setup_theme', array( 'StickyInCategory', 'get_instance' ) );
文章標題:WordPress 分类档案页面显示该分类置顶文章
文章連結:https://www.wuyanshuo.cn/1396.html
更新時間:2022年10月4日
1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。
2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程。
3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!