SearchWPで管理者検索に下書きおよび非公開投稿を含める方法
SearchWPは、SearchWPアルゴリズムページの「エンジン設定」で管理画面エンジンオプションを有効にすることにより、WordPress管理画面での検索結果を改善するための組み込みサポートを提供します。このオプションが有効になると、SearchWPは投稿画面や固定ページ画面での検索など、WordPressダッシュボード内で行われる検索を強化します。ただし、デフォルトでは、SearchWPは公開済みのコンテンツのみをインデックス化して返します。下書き、非公開、および予約済み(将来)の投稿は検索結果から除外されます。
この動作は、SearchWPが主にフロントエンドの検索エクスペリエンスを強化するように設計されており、公開されていないコンテンツは一般にアクセスできないようにする必要があるためです。その結果、明示的に含めない限り、公開されていない投稿ステータスはインデックス化されません。管理画面でコンテンツを検索するためにSearchWPを利用しており、下書き、非公開、または予約済みの投稿を見つける必要がある場合は、カスタムフィルターフックを使用してSearchWPの動作を拡張できます。
次の例は、フロントエンドの検索結果を変更せずに、管理画面のみの検索に下書き、非公開、および予約済みの投稿を含める方法を示しています。
| <?php | |
| // Search draft, private, and scheduled posts in admin side only | |
| add_filter( 'searchwp\post_stati', function ( $post_stati, $args ) { | |
| $is_search = is_search() || isset( $_REQUEST['s'] ); | |
| $is_swp_search = isset( $_REQUEST['swps'] ); | |
| $is_admin = is_admin() && ! wp_doing_ajax(); | |
| // Do not modify post statuses on SearchWP results pages and normal frontend searches | |
| if ( ($is_swp_search || $is_search) && ! $is_admin ) { | |
| return $post_stati; | |
| } | |
| // Include draft, private, and scheduled (future) posts in admin search | |
| return array_unique( | |
| array_merge( $post_stati, [ 'draft', 'private', 'future' ] ) | |
| ); | |
| }, 20, 2 ); |
このコードは、WPCodeのようなコードスニペットプラグインを使用するか、SearchWP Customizations Pluginを準備することによって追加できます。
このフックは、検索がWordPress管理画面内で行われた場合にのみ、SearchWPがインデックス作成および検索中に考慮する投稿ステータスのリストを変更します。その結果、SearchWPエンジンに含まれる投稿タイプのドラフト、プライベート、およびスケジュール済みの投稿がダッシュボードで検索可能になります。これらの投稿はフロントエンドの検索結果に表示されないため、公開されていないコンテンツがサイト訪問者に見えないようになります。

