Forked from abrudtkuhl/admin_filter_by_custom_fields.php
Created
August 14, 2018 10:49
-
-
Save 13122310958/3115d0a7f4e590577917816c94fb68b7 to your computer and use it in GitHub Desktop.
WordPress Filter Posts By Custom Field Value In Admin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Admin Filter BY Custom Fields | |
Plugin URI: http://en.bainternet.info | |
Description: Filter posts or pages in admin by custom fields (post meta) | |
Version: 1.0 | |
Author: Bainternet | |
Author URI: http://en.bainternet.info | |
*/ | |
add_filter( 'parse_query', 'ba_admin_posts_filter' ); | |
add_action( 'restrict_manage_posts', 'ba_admin_posts_filter_restrict_manage_posts' ); | |
function ba_admin_posts_filter( $query ) | |
{ | |
global $pagenow; | |
if ( is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_NAME']) && $_GET['ADMIN_FILTER_FIELD_NAME'] != '') { | |
$query->query_vars['meta_key'] = $_GET['ADMIN_FILTER_FIELD_NAME']; | |
if (isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '') | |
$query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_VALUE']; | |
} | |
} | |
function ba_admin_posts_filter_restrict_manage_posts() | |
{ | |
global $wpdb; | |
$sql = 'SELECT DISTINCT meta_key FROM '.$wpdb->postmeta.' ORDER BY 1'; | |
$fields = $wpdb->get_results($sql, ARRAY_N); | |
?> | |
<select name="ADMIN_FILTER_FIELD_NAME"> | |
<option value=""><?php _e('Filter By Custom Fields', 'baapf'); ?></option> | |
<?php | |
$current = isset($_GET['ADMIN_FILTER_FIELD_NAME'])? $_GET['ADMIN_FILTER_FIELD_NAME']:''; | |
$current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:''; | |
foreach ($fields as $field) { | |
if (substr($field[0],0,1) != "_"){ | |
printf | |
( | |
'<option value="%s"%s>%s</option>', | |
$field[0], | |
$field[0] == $current? ' selected="selected"':'', | |
$field[0] | |
); | |
} | |
} | |
?> | |
</select> <?php _e('Value:', 'baapf'); ?><input type="TEXT" name="ADMIN_FILTER_FIELD_VALUE" value="<?php echo $current_v; ?>" /> | |
<?php | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment