Filter Custom Post Type By Custom Field (ACF) In The Admin Area | Code For Developers

Filter custom post type by Custom Field (ACF) in the admin area

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

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']; 
    }
}
Previous Code

Elementor text editor Typography Issue [solution]

Elementor text editor Typography Issue [solution] ...

Next Code

WordPress Next and Previous Post

WordPress Next and Previous Post navigation for cu ...

Leave a Reply

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

If you find it useful

Buy me a coffee

ACF

Elementor

JavaScript

jQuery

Others

PHP

WooCommerce

WordPress

Enable Leverage browser caching & Compression

To speed up your website and get good score, Enabl ...

Elementor text editor Typography Issue [solution]

Elementor text editor Typography Issue [solution] ...

Upload file in hosting server via CPanel corn job

File transfer with Cpanel Cron job. Transfer file ...

top