在WordPress中实现仅显示特定类别下的zip附件筛选功能,可通过以下两种方案实现:
方案一:使用自定义分类法+附件类型筛选
注册自定义分类法
在主题的functions.php中添加代码创建专用于附件的分类系统
7
9:
php
Copy Code
add_action('init', 'register_attachment_taxonomy');
function register_attachment_taxonomy() {
register_taxonomy('attachment_category', 'attachment', array(
'label' => '附件分类',
'hierarchical' => true,
'show_admin_column' => true
));
}
修改附件上传类型限制
允许上传zip文件并扩展MIME类型检测
11:
php
Copy Code
add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes($mimes) {
$mimes['zip'] = 'application/zip';
return $mimes;
}
创建筛选短代码
生成可按分类筛选zip附件的短代码
8
19:
php
Copy Code
add_shortcode('filter_zip_attachments', 'filter_zip_attachments_func');
function filter_zip_attachments_func($atts) {
ob_start();
$terms = get_terms('attachment_category');
echo '<select id="zip-category-filter"><option value="">选择分类</option>';
foreach ($terms as $term) {
echo '<option value="'.$term->slug.'">'.$term->name.'</option>';
}
echo '</select><div id="zip-results"></div>';
return ob_get_clean();
}
方案二:使用WP_Query高级筛选
构建自定义查询
通过WP_Query的tax_query和post_mime_type参数组合查询
16
19:
php
Copy Code
function get_filtered_zips($category_slug) {
$args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'attachment_category',
'field' => 'slug',
'terms' => $category_slug
)
),
'post_mime_type' => 'application/zip'
);
return new WP_Query($args);
}
前端AJAX交互
添加JavaScript处理筛选请求
18:
javascript
Copy Code
jQuery(document).ready(function($) {
$('#zip-category-filter').change(function() {
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'filter_zip_attachments',
category: $(this).val()
},
success: function(response) {
$('#zip-results').html(response);
}
});
});
});
可视化插件方案(推荐)
对于非开发者,可安装SearchWP插件
18或Filter Everything插件
16,通过后台配置实现:
在插件设置中启用"附件"作为可搜索内容类型
添加基于自定义分类法的筛选条件
设置文件类型过滤为application/zip
两种技术方案均需注意:分类法注册后需在媒体库中为zip文件分配分类,且方案一需将短代码插入目标页面
7
9。对于大型媒体库,建议添加分页功能优化性能
6。
参考 |