【Cocoonのメモ欄対応】管理画面の投稿検索に「投稿ID」と「メモ欄」を含める

スポンサーリンク

【Cocoon必携】「投稿メモ欄」の文字を一発検索する神技

Cocoonには、各記事の編集画面に、自分だけの備忘録を書き残せる便利な「投稿メモ欄」が標準装備されています。

表示されていない場合は、画面右上の[表示オプション]を開いて【メモ】にチェックを入れてください。
WordPress投稿画面の表示オプションボタン

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が表示されます。
「編集」にマウスを重ねて、投稿IDを表示する方法

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

応援してもらえるとうれしいです♡ にほんブログ村 ブログブログ ブログノウハウへ にほんブログ村

WordPress
PR
無料デザインテンプレートなら【デザインAC】
この記事を書いた人
どらみ

ガジェットとWordPressをこよなく愛する大阪在住の自称こだわりの強いクリエイターです!スマートフォン📱やスマートウォッチ⌚の自己検証レビューから、WordPressテーマの便利なカスタマイズ技まで、初心者の方に寄り添った解説をモットーにしています!😆✨💻

どらみをフォローする

コメント Leave a Comment

タイトルとURLをコピーしました