🇺🇸 English
【Cocoon必携】「投稿メモ欄」の文字を一発検索する神技
Cocoonには、各記事の編集画面に、自分だけの備忘録を書き残せる便利な「投稿メモ欄」が標準装備されています。


しかし、このメモ欄。記事数が増えてくると「あのメモ、どの記事に書いたっけ…?」と迷子になってしまうのが最大の弱点でした。ところが、通常の[投稿を検索]窓にメモに書いた文字列を入力してもメモ欄のテキストを検索対象にすることはできません。
そのままではせっかくのメモ欄の活用の幅が狭くなってしまうので
1 検索窓に数字を打ち込んだら「投稿ID」でヒットし
2 文字(英語や日本語)を打ち込んだら、通常の検索に加えて「投稿メモ欄」の中身も含めてヒットするコードをご紹介します!
$wpdb->prepare()を使う形にコードを更新しました。管理人の環境で、投稿ID検索・メモ欄検索・通常の文字検索の動作を確認しています。パターンA:【Cocoonユーザー必携】投稿ID&メモ欄の同時検索コード
Cocoonを使っている方は、迷わずこちらのコードを子テーマのfunctions.phpの一番最後に貼り付けてください。
※コードは管理人の環境下で検証済みですが、ご利用は自己責任でお願いします。
-
/** * 【Cocoon専用】管理画面の投稿検索 * 数字入力:投稿IDのみを対象に完全一致で検索 * 文字入力:通常のタイトル・本文に加え「投稿メモ欄(the_page_memo)」も同時検索 */ function extend_admin_search_to_id_and_memo_exclusive( $search, $wp_query ) { global $wpdb; // 管理画面のメインクエリの検索時以外は除外 if ( ! is_admin() || ! $wp_query->is_main_query() || ! $wp_query->is_search() ) { return $search; } // 検索キーワードがない場合は除外 if ( ! isset( $wp_query->query_vars['s'] ) || '' === trim( (string) $wp_query->query_vars['s'] ) ) { return $search; } // 投稿一覧(edit)画面かつ「投稿(post)」の検索時のみ適用 $screen = get_current_screen(); if ( ! $screen || 'edit' !== $screen->base || 'post' !== $screen->post_type ) { return $search; } $term = trim( (string) $wp_query->query_vars['s'] ); // 1. 数字のみの場合:投稿IDの完全一致検索 if ( ctype_digit( $term ) ) { return $wpdb->prepare( " AND ({$wpdb->posts}.ID = %d)", (int) $term ); } // 2. 文字の場合:通常検索に投稿メモ欄を追加 $like = '%' . $wpdb->esc_like( $term ) . '%'; $memo_search = $wpdb->prepare( " OR EXISTS ( SELECT 1 FROM {$wpdb->postmeta} WHERE {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID AND {$wpdb->postmeta}.meta_key = %s AND {$wpdb->postmeta}.meta_value LIKE %s )", 'the_page_memo', $like ); // WordPress標準検索に投稿メモ欄の検索条件を追加 if ( ! empty( $search ) ) { $search = preg_replace( '/\)\s*$/', $memo_search . ')', $search, 1 ); } return $search; } add_filter( 'posts_search', 'extend_admin_search_to_id_and_memo_exclusive', 10, 2 );
パターンB:【他テーマ用】投稿ID検索シンプルコード
メモ欄のない他のテーマを使用されている場合は、こちらの通常検索に加えて投稿IDも検索に含めるコードをご利用ください。
-
/** * 管理画面の投稿検索に「投稿ID」を含めるカスタマイズ * 数字が入力された場合は、IDのみを対象に完全一致で検索する */ function extend_admin_search_to_post_id_exclusive( $search, $wp_query ) { global $wpdb; // 管理画面のメインクエリの検索時以外は除外 if ( ! is_admin() || ! $wp_query->is_main_query() || ! $wp_query->is_search() ) { return $search; } // 検索キーワードがない場合は除外 if ( ! isset( $wp_query->query_vars['s'] ) || '' === trim( (string) $wp_query->query_vars['s'] ) ) { return $search; } // 投稿一覧(edit)画面かつ「投稿(post)」の検索時のみ適用 $screen = get_current_screen(); if ( ! $screen || 'edit' !== $screen->base || 'post' !== $screen->post_type ) { return $search; } $term = trim( (string) $wp_query->query_vars['s'] ); // 数字のみの場合:投稿IDの完全一致検索 if ( ctype_digit( $term ) ) { return $wpdb->prepare( " AND ({$wpdb->posts}.ID = %d)", (int) $term ); } return $search; } add_filter( 'posts_search', 'extend_admin_search_to_post_id_exclusive', 10, 2 );
画面に見えていない「投稿ID」を調べる簡単な方法
WordPressでブログを運営していると、特定の記事だけを「おすすめ記事ウィジェットから除外したい」「関連記事ブロックから外したい」という場面がよくありますよね。
その時に必ず必要になるのが、各記事に割り当てられた固有の数字である「投稿ID」です。
ところが、WordPress本来の標準仕様では、この投稿IDは管理画面の投稿一覧には表示されていません。
「じゃあ、Cocoon以外のテーマを使っている人は、どうやって自分の投稿IDを調べればいいの?」と思いますよね。
実は、隠れているIDを確認する方法は至って簡単です。
方法:編集ボタンにマウスポインターを重ねるだけ(クリック不要)
一番早くておすすめなのが、投稿一覧画面でIDを知りたい記事の「編集」という文字の上に、 マウスポインター(マウスの矢印)を重ねるだけの裏技です。

そのURLの末尾をよーく見ると、post=31174などといった数字が書かれているので、編集画面をわざわざ開かなくても一瞬でIDを確認することができます!


