Last active
November 24, 2021 23:10
-
-
Save ahmadthedev/f1ce258de104235591cc8c40d40c0cff to your computer and use it in GitHub Desktop.
WordPress Admin Panel search posts with custom post meta values along with title
This file contains hidden or 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 | |
// WordPress Admin Panel search posts with custom post meta values along with title | |
if (!function_exists('ahmeddev125_extend_admin_search')) { | |
add_action('admin_init', 'ahmeddev125_extend_admin_search'); | |
/** | |
* hook the posts search if we're on the admin page for our type | |
*/ | |
function ahmeddev125_extend_admin_search() { | |
global $typenow; | |
if ($typenow === 'poster') { | |
add_filter('posts_search', 'posts_search_custom_post_type', 10, 2); | |
} | |
} | |
/** | |
* add query condition for custom meta | |
* @param string $search the search string so far | |
* @param WP_Query $query | |
* @return string | |
*/ | |
function posts_search_custom_post_type($search, $query) { | |
global $wpdb; | |
if ($query->is_main_query() && !empty($query->query['s'])) { | |
$sql = " | |
or exists ( | |
select * from {$wpdb->postmeta} where post_id={$wpdb->posts}.ID | |
and meta_key in ('year','unique_id', 'description', 'ssdd_rolled_or_folded', 'director', 'cast') | |
and meta_value like %s | |
) | |
"; | |
$like = '%' . $wpdb->esc_like($query->query['s']) . '%'; | |
$search = preg_replace("#\({$wpdb->posts}.post_title LIKE [^)]+\)\K#", | |
$wpdb->prepare($sql, $like), $search); | |
} | |
return $search; | |
} | |
} | |
// Add new post columns | |
add_filter('manage_poster_posts_columns', 'ahmeddev125_poster_table_head'); | |
function ahmeddev125_poster_table_head( $columns ) { | |
$columns['poster_unique_id'] = 'Unique ID'; | |
$columns['poster_year'] = 'Year'; | |
$columns['poster_description'] = 'Description'; | |
$columns['poster_ssdd_rolled_or_folded'] = 'SS/DS'; | |
$columns['poster_director'] = 'Director'; | |
$columns['poster_cast'] = 'Cast'; | |
return $columns; | |
} | |
add_action( 'manage_poster_posts_custom_column', 'ahmeddev125_poster_table_content', 10, 2 ); | |
function ahmeddev125_poster_table_content( $column_name, $post_id ) { | |
if( $column_name == 'poster_unique_id' ) { | |
$poster_unique_id = get_post_meta( $post_id, 'unique_id', true ); | |
if( !empty($poster_unique_id) ) { | |
echo $poster_unique_id; | |
} | |
} | |
if( $column_name == 'poster_year' ) { | |
$poster_year = get_post_meta( $post_id, 'year', true ); | |
if( !empty($poster_year) ) { | |
echo $poster_year; | |
} | |
} | |
if( $column_name == 'poster_description' ) { | |
$poster_description = get_post_meta( $post_id, 'description', true ); | |
if( !empty($poster_description) ) { | |
echo $poster_description; | |
} | |
} | |
if( $column_name == 'poster_ssdd_rolled_or_folded' ) { | |
$poster_ssdd_rolled_or_folded = get_post_meta( $post_id, 'ssdd_rolled_or_folded', true ); | |
if( !empty($poster_ssdd_rolled_or_folded) ) { | |
echo $poster_ssdd_rolled_or_folded; | |
} | |
} | |
if( $column_name == 'poster_director' ) { | |
$poster_director = get_post_meta( $post_id, 'director', true ); | |
if( !empty($poster_director) ) { | |
echo $poster_director; | |
} | |
} | |
if( $column_name == 'poster_cast' ) { | |
$poster_cast = get_post_meta( $post_id, 'cast', true ); | |
if( !empty($poster_cast) ) { | |
echo $poster_cast; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment