IT-Swarm.Net

3.3.1 작동하지 않는 restrict_manage_posts

사용자 정의 분류 필터가 3.3.1 관리자에서 더 이상이 방법에 따라 작동하지 않는다는 것을 알았습니다. 사용자 정의 포스트 유형의 관리 목록에 분류 필터 추가?

또한 택 소노 미를 필터링하기 위해 쿼리 문자열에 &taxonomy=whatever&term=something가 모두 전달되어야한다는 사실을 발견했습니다. 누구나 이것에 대한 경험이 있으며 제공 할 솔루션은 무엇입니까?

예를 들어 질문의 일부 코드는 다음과 같습니다.

add_action('restrict_manage_posts','restrict_listings_by_business');
function restrict_listings_by_business() {
    global $typenow;
    global $wp_query;
    if ($typenow=='listing') {
        $taxonomy = 'business';
        $business_taxonomy = get_taxonomy($taxonomy);
        wp_dropdown_categories(array(
            'show_option_all' =>  __("Show All {$business_taxonomy->label}"),
            'taxonomy'        =>  $taxonomy,
            'name'            =>  'business',
            'orderby'         =>  'name',
            'selected'        =>  $wp_query->query['term'],
            'hierarchical'    =>  true,
            'depth'           =>  3,
            'show_count'      =>  true, // Show # listings in parens
            'hide_empty'      =>  true, // Don't show businesses w/o listings
        ));
    }
}

add_filter('parse_query','convert_business_id_to_taxonomy_term_in_query');
function convert_business_id_to_taxonomy_term_in_query($query) {
    global $pagenow;
    $qv = &$query->query_vars;
    if ($pagenow=='edit.php' &&
            isset($qv['taxonomy']) && $qv['taxonomy']=='business' &&
            isset($qv['term']) && is_numeric($qv['term'])) {
        $term = get_term_by('id',$qv['term'],'business');
        $qv['term'] = $term->slug;
    }
}
5
Niels

코드에 몇 가지 문제가 있습니다 ...

  1. 필터링 할 때 용어의 ID를 제공하는 term은 아니지만 드롭 다운 메뉴에서 제공 한 이름이므로 business (이 경우)입니다. term의 모든 인스턴스를 business로 바꾸십시오.
  2. 필터링 할 때 분류가 설정되지 않습니다. parse_query 기능에서이 검사를 제거하십시오.

다음은 나를 위해 일했습니다 (단, '목록'을 '게시'로 변경했습니다) ...

add_action('restrict_manage_posts','restrict_listings_by_business');
function restrict_listings_by_business() {
    global $typenow;
    global $wp_query;
    if ($typenow=='post') {
    $taxonomy = 'business';
    $term = isset($wp_query->query['business']) ? $wp_query->query['business'] :'';
    $business_taxonomy = get_taxonomy($taxonomy);
        wp_dropdown_categories(array(
            'show_option_all' =>  __("Show All"),
            'taxonomy'        =>  $taxonomy,
            'name'            =>  'business',
            'orderby'         =>  'name',
            'selected'        =>  $term,
            'hierarchical'    =>  true,
            'depth'           =>  3,
            'show_count'      =>  true, // Show # listings in parens
            'hide_empty'      =>  true, // Don't show businesses w/o listings
        ));
    }
}
add_filter('parse_query','convert_business_id_to_taxonomy_term_in_query');
function convert_business_id_to_taxonomy_term_in_query($query) {
    global $pagenow;
    $qv =& $query->query_vars;
    if ($pagenow=='edit.php' && isset($qv['business']) && is_numeric($qv['business'])) {
        $term = get_term_by('id',$qv['business'],'business');
        $qv['business'] = ($term ? $term->slug : '');
    }
}
4
Stephen Harris