请求修改WordPress Archive Widget,仅展示当前分类文章并注册新组件
自定义WordPress归档组件:分类关联式月份归档跳转
以下代码可添加到你的WordPress子主题functions.php中,创建一个全新的「分类关联归档」小工具,实现需求:在分类页面点击归档月份时,自动跳转到携带当前分类category_name参数的日期归档页面。
<?php // 自定义分类关联归档小工具类,继承默认归档组件 class Category_Linked_Archives_Widget extends WP_Widget_Archives { public function __construct() { $widget_ops = array( 'classname' => 'category-linked-archives-widget', 'description' => '显示关联当前分类的月份归档', 'customize_selective_refresh' => true, ); parent::__construct('category-linked-archives', __('分类关联归档'), $widget_ops); } // 重写组件渲染逻辑,修改归档链接参数 public function widget($args, $instance) { $show_post_count = !empty($instance['count']); $dropdown = !empty($instance['dropdown']); echo $args['before_widget']; if (!empty($instance['title'])) { echo $args['before_title'] . apply_filters('widget_title', $instance['title'], $instance, $this->id_base) . $args['after_title']; } // 获取当前页面的分类对象 $current_category = get_queried_object(); $category_slug = is_category() && !empty($current_category->slug) ? $current_category->slug : ''; if ($dropdown) { $dropdown_id = "{$this->id_base}-dropdown-{$this->number}"; ?> <label class="screen-reader-text" for="<?php echo esc_attr($dropdown_id); ?>"><?php echo __('归档'); ?></label> <select id="<?php echo esc_attr($dropdown_id); ?>" name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo __('选择月份'); ?></option> <?php wp_get_archives(array( 'type' => 'monthly', 'format' => 'option', 'show_post_count' => $show_post_count, 'echo' => 1, 'add_args' => array('category_name' => $category_slug) )); ?> </select> <?php } else { ?> <ul> <?php wp_get_archives(array( 'type' => 'monthly', 'show_post_count' => $show_post_count, 'echo' => 1, 'add_args' => array('category_name' => $category_slug) )); ?> </ul> <?php } echo $args['after_widget']; } } // 注册自定义小工具 add_action('widgets_init', function() { register_widget('Category_Linked_Archives_Widget'); }); ?>
关键说明
- 复用基础功能:基于官方默认的
WP_Widget_Archives扩展,保留原归档组件的样式、计数、下拉/列表模式等所有基础特性 - 自动适配分类页面:通过
get_queried_object()识别当前分类,仅在分类页面时自动追加category_name参数 - 独立组件不冲突:新组件名为「分类关联归档」,可在后台「外观→小工具」中找到并启用,完全替代原归档组件即可
注意事项
- 必须添加到子主题的
functions.php中,避免主题更新导致代码丢失 - 确保WordPress固定链接设置为含日期的格式(如
/%year%/%monthnum%/),否则日期归档URL格式会不符合预期 - 若需仅对「Acts」分类生效,可将
is_category()修改为is_category('acts')
内容的提问来源于stack exchange,提问作者Damir Loncaric
相关产品推荐
相关产品推荐

