网址分类筛选BUG问题:
打开主题文件夹会吧,找到如下文件 onenav/inc/post-type.php
在526行的位置找到该代码↓
if ('edit.php' == $pagenow && $filters && isset($_GET[ $filters[0] ]) && $_GET[ $filters[0] ] != '0' ) {
将其替换为:
if ('edit.php' == $pagenow && $filters && isset($_GET[ $filters[1] ]) && $_GET[ $filters[1] ] != '0' ) {
问题解决!如果要添加网址标签分类选项,继续往下↓
添加网址标签分类选项:
忽略第一步,如果已经修改也不用在意,按照如下方式修改:
还是post-type.php这个文件,将第508行这个钩子函数直接替换为:
add_filter('parse_query', function ($query) {
if(!is_admin())
return;
global $pagenow;
global $typenow;
$filters = get_object_taxonomies($typenow);
if ( 'edit.php' == $pagenow && isset($_GET[ 'sites_type' ]) && $_GET[ 'sites_type' ] != '0' ) {
$position = $_GET[ 'sites_type' ];
$query->query_vars[ 'meta_key' ] = '_sites_type';
$query->query_vars[ 'meta_value' ] = $position;
$query->query_vars[ 'meta_compare' ] = '=';
}
if ( 'edit.php' == $pagenow && isset($_GET[ 'book_type' ]) && $_GET[ 'book_type' ] != '0' ) {
$position = $_GET[ 'book_type' ];
$query->query_vars[ 'meta_key' ] = '_book_type';
$query->query_vars[ 'meta_value' ] = $position;
$query->query_vars[ 'meta_compare' ] = '=';
}
if ('edit.php' == $pagenow && $filters && isset($_GET[ $filters[0] ]) && $_GET[ $filters[0] ] != '0' ) {
//$filters = get_object_taxonomies($typenow);
foreach ($filters as $tax_slug) {
$var = &$query->query_vars[$tax_slug];
if ( isset($var) && $var>0) {
$term = get_term_by('id',$var,$tax_slug);
if($term)
$var = $term->slug;
}
}
}
return $query;
});
然后将cpt_type_filter方法替换 (第469行到505行代码)
// 修正自定义标签筛选-----------------------------------------------------------------
add_action('restrict_manage_posts', 'cpt_type_filter', 10);
function cpt_type_filter($post_type) {
// 处理自定义文章类型 'sites' 和 'book'
if ('sites' == $post_type) {
$request_attr = 'sites_type';
$meta_key = '_sites_type';
} elseif ('book' == $post_type) {
$request_attr = 'book_type';
$meta_key = '_book_type';
} else {
return;
}
// 选择过滤器
$selected = '';
if (isset($_REQUEST[$request_attr])) {
$selected = $_REQUEST[$request_attr];
}
// 获取筛选条件数据
global $wpdb;
$results = $wpdb->get_col(
$wpdb->prepare( "
SELECT DISTINCT pm.meta_value
FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_status IN ('publish', 'draft')
ORDER BY pm.meta_value",
$meta_key
)
);
// 输出自定义字段筛选下拉菜单
echo '<select id="my-loc" name="' . $request_attr . '">';
echo '<option value="0">' . __('选择类型', 'io_setting') . ' </option>';
foreach ($results as $location) {
$select = ($location == $selected) ? ' selected="selected"' : '';
echo '<option value="' . $location . '"' . $select . '>' . $location . ' </option>';
}
echo '</select>';
// 处理自定义分类法 'sitetag' 的标签筛选
if ('sites' == $post_type || 'book' == $post_type) {
$tag_filter = 'sitetag'; // 自定义分类法筛选条件
$tags = get_terms(array(
'taxonomy' => 'sitetag', // 使用自定义标签分类 'sitetag'
'orderby' => 'name',
'hide_empty' => false, // 包括没有文章的标签
));
// 输出自定义分类法标签筛选下拉菜单
if (!empty($tags) && !is_wp_error($tags)) {
echo '<select name="tag_filter">';
echo '<option value="0">' . __('选择标签', 'io_setting') . ' </option>';
foreach ($tags as $tag) {
$selected_tag = (isset($_GET['tag_filter']) && $_GET['tag_filter'] == $tag->term_id) ? ' selected="selected"' : '';
echo '<option value="' . $tag->term_id . '" ' . $selected_tag . '>' . $tag->name . '</option>';
}
echo '</select>';
}
}
}
add_filter('parse_query', function ($query) {
if (is_admin() && 'edit.php' == $GLOBALS['pagenow']) {
// 检查自定义分类法 'sitetag' 筛选条件
if (isset($_GET['tag_filter']) && $_GET['tag_filter'] != '0') {
$tag_id = $_GET['tag_filter'];
$query->query_vars['tax_query'] = array(
array(
'taxonomy' => 'sitetag', // 自定义分类法 'sitetag'
'field' => 'term_id',
'terms' => $tag_id,
'operator' => 'IN',
),
);
}
}
return $query;
});
最终效果如下
如果还是不会,建议直接放弃治疗!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...