December 30, 2024
ACF
1 min read
custom field filter wordpress

Show filter on custom post type admin area with custom field value

functions.php
<?PHP 
//admin filter
add_action( 'restrict_manage_posts', 'wpse45436_admin_posts_filter_restrict_manage_posts' );
/**
 * First create the dropdown
/** Create the filter dropdown */
function wpse45436_admin_posts_filter_restrict_manage_posts(){
    $type = 'custom_post_type'; // change to custom post name.
    if (isset($_GET['custom_post_type'])) {
        $type = $_GET['custom_post_type'];
    }

    //only add filter to post type you want
    if ('movies' == $type){
        //change this to the list of values you want to show
        //in 'label' => 'value' format
        $values = array(
            'label' => 'value1', 
            'label1' => 'value2',
            'label2' => 'value3',
        );
        ?>
        <select name="ADMIN_FILTER_FIELD_VALUE">
        <option value=""><?php _e('Filter By ', 'wose45436'); ?></option>
        <?php
            $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
            foreach ($values as $label => $value) {
                printf
                    (
                        '<option value="%s"%s>%s</option>',
                        $value,
                        $value == $current_v? ' selected="selected"':'',
                        $label
                    );
                }
        ?>
        </select>
        <?php
    }
}


add_filter( 'parse_query', 'wpse45436_posts_filter' );
/**
 * if submitted filter by post meta

 * @return Void
 */
function wpse45436_posts_filter( $query ){
    global $pagenow;
    $type = 'movies'; // change to custom post name.
    if (isset($_GET['custom_post_type'])) {
        $type = $_GET['custom_post_type'];
    }
    if ( 'movies' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '') {
        $query->query_vars['meta_key'] = 'META_KEY'; // change to meta key created by acf.
        $query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_VALUE']; 
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

WooCommerce Checkout Conflict with Bootstrap 4.x

WooCommerce Checkout Conflict with Bootstrap 4.x. simple small code can fix this issue

Simple jQuery Accordion Collapse

Custom coded Simple jQuery Accordion with toggle arrow. No need extra plugin or fremwork like bootstrap

Protected: WP user Login Notification

There is no excerpt because this is a protected post.

HTML img tag to HTML SVG tag [WordPress]

Image to SVG for WordPress. Generate svg code from image file

Web Development Project in mind?

if you looking for a web developer for paid contribution to your project I am available for work.

Mukto
Mukto

Click the button below to chat with me.