2017/8/18現在最新版の「Search Regex 1.4.16」で確認しました
バージョンによって、この部分の書き方が違うようです。
原理
search-regex/searches/post_content.php //記事本文
search-regex/searches/post_meta.php //メタタグ
search-regex/searches/post_title.php //記事タイトル
search-regex/searchesフォルダに、検索条件がかかれているPHPがあるので、これを改造することで実現します。
記事本文の検索対象を、公開済みのみに
class SearchPostContent extends Search {
function find( $pattern, $limit, $offset, $orderby ) {
global $wpdb;
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page') ORDER BY ID ".$orderby;
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN ('post','page') ORDER BY ID ".$orderby; //追加行
search-regex/searches/post_content.php
上記のファイルに、上記のような追加行をつけると実現できます。
現在のSQLの下に、あたらな条件のSQLを書けばOKです。
新しい行(変数)で、上書きされます。
旧:post_status != 'inherit'
新:post_status = 'publish'
カスタム投稿タイプに対応
方法その1
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page','event') ORDER BY ID ".$orderby;
旧:post_type IN ('post','page')
新:post_type IN ('post','page','event')
カスタムタイプのeventを追加
参考:WordPressをSSL化 ― Search Regexに潜む罠とは | ハナモゲラボ / 試行錯誤の実験人生
方法その2
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID ".$orderby;
post_type の条件をとってしまうと、すべてが対象になるはず
旧:post_type IN ('post','page','event')
新:削除
スポンサーリンク