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


しかし、このメモ欄。記事数が増えてくると「あのメモ、どの記事に書いたっけ…?」と迷子になってしまうのが最大の弱点でした。ところが、通常の[投稿を検索]窓にメモに書いた文字列を入力してもメモ欄のテキストを検索対象にすることはできません。
そのままではせっかくのメモ欄の活用の幅が狭くなってしまうので
1 検索窓に数字を打ち込んだら「投稿ID」でヒットし
2 文字(英語や日本語)を打ち込んだら、通常の検索に加えて「投稿メモ欄」の中身も含めてヒットするコードをご紹介します!
パターン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'] ) || $wp_query->query_vars['s'] === '' ) { return $search; } // 投稿一覧(edit)画面かつ「投稿(post)」の検索時のみ適用 $screen = get_current_screen(); if ( $screen && $screen->base === 'edit' && $screen->post_type === 'post' ) { $term = $wp_query->query_vars['s']; // 1. 入力された文字が「完全に数字のみ」だった場合 if ( is_numeric( $term ) ) { // 標準検索(タイトル・本文)をストップし、投稿IDの完全一致のみ検索 $search = " AND ({$wpdb->posts}.ID = '" . esc_sql( $term ) . "')"; } // 2. 入力された文字が「テキスト(日本語や英語)」だった場合 else { $keyword = $wpdb->esc_like( $term ); // 「投稿メモ欄」の条件を検索クエリの末尾に安全に結合(部分一致対応) $search_add = " OR EXISTS ( SELECT 1 FROM {$wpdb->postmeta} WHERE {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID AND {$wpdb->postmeta}.meta_key = 'the_page_memo' AND {$wpdb->postmeta}.meta_value LIKE '%{$keyword}%' )"; if ( ! empty( $search ) ) { $search = preg_replace( '/\)\s*$/', $search_add . ')', $search ); } } } 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'] ) || $wp_query->query_vars['s'] === '' ) { return $search; } // 投稿一覧(edit)画面かつ「投稿(post)」の検索時のみ適用 $screen = get_current_screen(); if ( $screen && $screen->base === 'edit' && $screen->post_type === 'post' ) { $term = $wp_query->query_vars['s']; // 入力された文字が「完全に数字のみ」だった場合 if ( is_numeric( $term ) ) { // WordPress標準のタイトル・本文検索の命令を完全にシャットアウトし、IDの完全一致のみに書き換える $search = " AND ({$wpdb->posts}.ID = '" . esc_sql( $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を確認することができます!

コメント Leave a Comment