管理画面の一覧よりカスタムフィールドの値で検索する

管理画面の一覧よりカスタムフィールドの値で検索する

function.phpに下記を追加する。

// 管理画面の検索範囲を変更する
function add_subtitle_filter(){
    global $post_type;
    //表示するのは投稿一覧画面のみ
    if ( $post_type == 'post' ) {
      echo '<input type="text" name="subtitle" value="'. get_query_var('subtitle'). '" placeholder="subtitle" />';
    }
};
add_action('restrict_manage_posts', 'add_subtitle_filter');

function add_subtitle($vars) {
  $vars[] = 'subtitle';
  return $vars;
}
add_filter('query_vars', 'add_subtitle');

function posts_where_subtitle($where) {
  global $wpdb;
  //管理画面でのみ実行
  if(is_admin()) {
    $value = get_query_var('subtitle');
        if(!empty($value)) {
            //検索条件にカスタムフィールド「subtitle」の値を追加
            $where .= $wpdb->prepare(" AND EXISTS ( SELECT * FROM {$wpdb->postmeta} as m
                WHERE m.post_id = {$wpdb->posts}.ID AND m.meta_key = 'subtitle' AND m.meta_value like %s )",
                "%{$value}%" );
        }
    }
    return $where;
};
add_filter('posts_where', 'posts_where_subtitle');

参考サイト

ネクストページブログ
WordPressの投稿一覧からカスタムフィールドの絞り込み検索を追加するカスタマイズ。
http://nxpg.net/blog/?p=7467