Skip to content

Instantly share code, notes, and snippets.

@ahmadthedev
Last active November 24, 2021 23:10
Show Gist options
  • Save ahmadthedev/f1ce258de104235591cc8c40d40c0cff to your computer and use it in GitHub Desktop.
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
<?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