WordPress自定义文章类型Events排序与分类筛选问题求助
解决WordPress自定义Events文章类型的两个问题
一、后台Events文章按最新日期排序
添加pre_get_posts钩子修改后台查询逻辑,强制Events列表按发布日期倒序排列:
// 后台Events列表按最新日期排序 add_action('pre_get_posts', 'events_admin_sort_by_date'); function events_admin_sort_by_date($query) { global $pagenow; // 判断是否在后台编辑页面,且当前文章类型为events if (is_admin() && $pagenow === 'edit.php' && isset($query->query['post_type']) && $query->query['post_type'] === 'events') { $query->set('orderby', 'date'); $query->set('order', 'DESC'); } }
二、限制创建Events时仅能选择特定分类
提供两种方案,根据需求选择:
方案1:限制默认Category分类仅显示指定ID的分类
如果需要在默认文章分类中仅允许选择特定几个分类(例如分类ID为3、5、7),添加以下钩子:
// 限制Events文章仅能选择特定分类 add_filter('wp_terms_checklist_args', 'restrict_events_category_selection', 10, 2); function restrict_events_category_selection($args, $post_id) { $post = get_post($post_id); // 判断当前文章类型为events,且操作的是默认category分类 if ($post && $post->post_type === 'events' && $args['taxonomy'] === 'category') { // 替换为你需要允许选择的分类ID数组 $args['include'] = array(3, 5, 7); } return $args; }
方案2:创建Events专属的自定义分类(更推荐)
如果不想和普通文章的分类混用,建议给Events注册专属自定义分类,这样创建文章时只会显示该分类下的选项:
替换你原有的自定义文章类型注册代码为以下内容:
//Custom Post Types add_action('init', 'custom_post'); function custom_post() { // 注册Events专属分类 register_taxonomy('event_category', 'events', array( 'label' => '活动分类', 'singular_label' => '活动分类', 'hierarchical' => true, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array('slug' => 'event-category') )); register_post_type('events', array( 'label' => 'Events', 'singular_label' => 'Events', 'hierarchical' => true, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'events'), 'capability_type' => 'post', // 关联专属自定义分类 'taxonomies' => array( 'post_tag', 'event_category'), 'menu_position' => 5, 'menu_icon' => 'dashicons-calendar', 'supports' => array( 'title', 'editor', 'custom-fields', 'excerpt', 'thumbnail', 'page-attributes' ), ) ); }
内容的提问来源于stack exchange,提问作者X_JuDaH_X
相关产品推荐
相关产品推荐

