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 *

Get WooCommerce product info

Show product info in the place as you wish to. It help you to make your custom woocommerce product page layout.

Replace add to cart button with the product page link & Change add to cart text

`Replace add to cart button with product single linked to product page on shop pages in WooCommerce 3

How to Add Page Template from Your Plugin

Add custom page template from your plugin with simple code snippet.

Add Classe when the item visible

Add class on scroll to viewport jquery code

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.