【WordPress プラグイン】Search Regexで、検索条件を変える為の改造方法

  • 投稿 : 2017-08-18

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')
新:削除

スポンサーリンク