Umesh Balayar Umesh Balayar - 4 months ago 15
PHP Question

How to add Filter in WordPress of custom metabox in custom post type?

I wann add filter link below image
enter image description here

Thank you in advance.

Answer

check this

add_action( 'restrict_manage_posts', 'our_drink_filter' );
/**
 * First create the dropdown
 * make sure to change POST_TYPE to the name of your custom post type
 * 
 * @author Ohad Raz
 * 
 * @return void
 */
function our_drink_filter(){
    $type = 'post';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }

    //only add filter to post type you want
    if ('our_drink' == $type){
        //change this to the list of values you want to show
        //in 'label' => 'value' format
        $filter_post = array();
        $all_movies1 = get_posts( array(
            'post_type' => 'our_restaurant',
            'numberposts' => -1,
            'orderby' => 'post_title',
            'order' => 'ASC'
            ) );
            foreach ( $all_movies1 as $movie1 ) :
                //echo $movie1->post_title." ".sanitize_title($movie1->post_title)."<br>";
                array_push($filter_post[$movie1->post_title] = sanitize_title($movie1->post_title));

            endforeach; 
        ?>
        <select name="ADMIN_FILTER_FIELD_VALUE">
        <option value=""><?php _e('Store Name ', 'wose45436'); ?></option>
        <?php
            $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
            foreach ($filter_post as $label => $value) {
                printf
                    (
                        '<option value="%s"%s>%s</option>',
                        $value,
                        $value == $current_v? ' selected="selected"':'',
                        $label
                    );
                }
        ?>
        </select>
        <?php
    }
}


add_filter( 'parse_query', 'drink_posts_filter' );
/**
 * if submitted filter by post meta
 * 
 * make sure to change META_KEY to the actual meta key
 * and POST_TYPE to the name of your custom post type
 * @author Ohad Raz
 * @param  (wp_query object) $query
 * 
 * @return Void
 */
function drink_posts_filter( $query ){
    global $pagenow;
    $type = 'post';
    if (isset($_GET['post_type'])) {
        $type = $_GET['post_type'];
    }
    if ( 'our_drink' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '') {
        $query->query_vars['meta_key'] = 'custom_element_grid_class_meta_box';
        $query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_VALUE'];
    }
}