サポート » 使い方全般 » ページIDを検索したい

  • 解決済 milkfed

    (@milkfed)


    ページIDを検索対象にすることは可能でしょうか?

    たとえば、検索窓に198と入力すると
    http://hogehoge.co.jp/wordpress/?p=198
    のページが検索結果に表示されることを望んでいます。
    (検索結果の表示形式はページタイトルで構いません)

    検索についてはSearch Everythingというプラグインが多機能のようですが
    私の望む動作は管理できないようでした。

    ヒント等ご教授頂ければと思います。
    よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    CodexのCustom Queriesのページを参考に作ってみました。正規表現が超自信ないです。一応自分の環境では動きました。
    以下のコードをお使いのテーマの functions.php に追記していただければ検索対象に記事IDが追加されるはず…。

    function post_id_search_where( $where )
    {
    	global $wpdb;
    	if( is_search() ) {
    		$where = preg_replace(
    			"/\(\s*$wpdb->posts\.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
    			"($wpdb->posts.post_title LIKE $1) OR ($wpdb->posts.ID LIKE $1)", $where );
    	}
    	return $where;
    }
    add_filter('posts_where', 'post_id_search_where' );
    トピック投稿者 milkfed

    (@milkfed)

    hissyさん

    試してみたところ、望んだ通りに動作しました!
    どうもありがとうございました!

    モデレーター Takuro Hishikawa

    (@hissy)

    解決済みですが、jim912さんに指摘をいただきましてちょこっと修正しました。

    function post_id_search_where( $where, $obj )
    {
    	global $wpdb;
    	if( $obj->is_search ) {
    		$where = preg_replace(
    			"/\(\s*$wpdb->posts\.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
    			"($wpdb->posts.post_title LIKE $1) OR ($wpdb->posts.ID LIKE $1)", $where );
    	}
    	return $where;
    }
    add_filter('posts_where', 'post_id_search_where', 10, 2 );
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「ページIDを検索したい」には新たに返信することはできません。