Forked from abrudtkuhl/admin_filter_by_custom_fields.php
Created
April 1, 2016 03:41
-
-
Save kimtrien/1feb296d0d403ad4fbfa8078351141cc 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