以下是一个示例代码,展示了如何按类别过滤自定义文章类型:
// 在 functions.php 文件中添加以下代码
// 创建自定义文章类型
function create_custom_post_type() {
register_post_type('custom_article',
array(
'labels' => array(
'name' => __('自定义文章'),
'singular_name' => __('自定义文章')
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'custom-fields')
)
);
}
add_action('init', 'create_custom_post_type');
// 创建自定义分类法
function create_custom_taxonomy() {
register_taxonomy(
'article_category',
'custom_article',
array(
'label' => __('文章分类'),
'rewrite' => array('slug' => 'article-category'),
'hierarchical' => true,
)
);
}
add_action('init', 'create_custom_taxonomy');
// 在模板中显示过滤结果
function filter_custom_posts_by_category() {
global $typenow;
// 获取当前文章类型
if ($typenow == 'custom_article') {
// 获取文章分类法
$taxonomy = 'article_category';
$term = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
// 获取分类列表
$terms = get_terms($taxonomy);
// 显示分类下拉菜单
if ($terms) {
echo "";
}
}
}
add_action('restrict_manage_posts', 'filter_custom_posts_by_category');
// 根据选择的分类过滤文章
function perform_custom_posts_filtering($query) {
$qv = &$query->query_vars;
// 获取文章分类法和选择的分类
$taxonomy = 'article_category';
$term = isset($qv[$taxonomy]) ? $qv[$taxonomy] : '';
// 过滤文章
if ($term) {
$query->query_vars['tax_query'] = array(
array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => array($term)
)
);
}
}
add_filter('parse_query', 'perform_custom_posts_filtering');
这个例子中,我们首先创建了一个名为custom_article
的自定义文章类型,并为它创建了一个名为article_category
的自定义分类法。然后,我们在文章列表页面添加了一个下拉菜单,用于选择分类。最后,我们使用parse_query
过滤器来根据选择的分类过滤文章。
你可以将以上代码添加到你的 WordPress 主题的functions.php
文件中,然后在后台创建自定义文章类型和分类,并在文章列表页面进行分类过滤。
上一篇:按类别过滤数据
下一篇:按类别和不同的日期分组在同一列