WordPress Filter Posts By Custom Field Value In Admin
July 28, 2014
development wordpressSearching for posts or pages in the WordPress admin by default only includes titles and body content. If you want to search by custom fields in the WP Admin Edit Posts / Pages page then you can install this plugin or script.
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 | |
} |
via Bainternet on WordPress StackExchange
Show Comments