2017-01-10 16 views
1

私は、すべての投稿の管理画面をフィルタリングして、ユニークなカテゴリの投稿を取得しようとしています。今では は、私がprase_queryフックと、URLの$ _GETキーを設定するために管理してきました:Wordpress管理者の変更クエリ

add_filter('parse_query', 'lxa_admin_posts_filter'); 
    function lxa_admin_posts_filter($query) { 
    global $pagenow; 
     if (is_admin() && $pagenow=='edit.php' && isset($_GET['category_only']) && $_GET['category_only'] != '') { 
     $query->query_vars['meta_key'] = $_GET['category_only']; 
    } 
} 

その後、restrict_manage_postsフックを使用して、私はすべての私の投稿のカテゴリを含むドロップダウンを作成しました:

function lxa_admin_posts_filter_restrict_manage_posts() { 
global $wpdb; 

$categories = get_categories(array(
    'taxonomy' => 'category', 
    'orderby' => 'name', 
    'parent' => 0, 
    'hierarchical' => true, 
)); 

?> 
<select name="category_only"> 
<option value=""><?php _e('Filter By Category Only', 'baapf'); ?></option> 
<?php foreach ($categories as $category) { 
    echo '<option value= "' . $category -> term_id . '" > ' . $category -> name . '</option>'; 

} 

?> 
</select> 


<?php } 

この 'category_only'キーを使用して、カテゴリを1つだけ含む投稿を取得するためにループを変更することはできますか?

答えて

1

ありがとう、私はこのコードを使用することをお勧め:

/** 
* Display a custom taxonomy dropdown in admin 
* @author Mike Hemberger 
* @link http://thestizmedia.com/custom-post-type-filter-admin-custom-taxonomy/ 
*/ 
add_action('restrict_manage_posts', 'tsm_filter_post_type_by_taxonomy'); 
function tsm_filter_post_type_by_taxonomy() { 
    global $typenow; 
    $post_type = 'lessons_cpt'; // change to your post type 
    $taxonomy = 'chapters'; // change to your taxonomy 
    if ($typenow == $post_type) { 
     $selected  = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : ''; 
     $info_taxonomy = get_taxonomy($taxonomy); 
     wp_dropdown_categories(array(
      'show_option_all' => __("Show All {$info_taxonomy->label}"), 
      'taxonomy'  => $taxonomy, 
      'name'   => $taxonomy, 
      'orderby'   => 'name', 
      'selected'  => $selected, 
      'show_count'  => true, 
      'hide_empty'  => true, 
     )); 
    }; 
} 
/** 
* Filter posts by taxonomy in admin 
* @author Mike Hemberger 
* @link http://thestizmedia.com/custom-post-type-filter-admin-custom-taxonomy/ 
*/ 
add_filter('parse_query', 'tsm_convert_id_to_term_in_query_videos'); 
function tsm_convert_id_to_term_in_query_videos($query) { 
    global $pagenow; 
    $post_type = 'lessons_cpt'; // change to your post type 
    $taxonomy = 'chapters'; // change to your taxonomy 
    $q_vars = &$query->query_vars; 
    if ($pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == $post_type && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0) { 

    $term = get_term_by('id', $q_vars[$taxonomy], $taxonomy); 
     $q_vars[$taxonomy] = $term->slug; 
    } 
} 

あなただけのCPTと分類を変更する必要があります。 私は最近のプロジェクトで使用しました。

出典: http://thestizmedia.com/custom-post-type-filter-admin-custom-taxonomy/

+1

は魅力のように働きました。既存のコードで作業するためにいくつかの調整が必要でした – Adrian

関連する問題