VK Searchの検索対象を見出し語だけにしたい

0
いいねをした人: 居ません
  • このトピックには5件の返信、2人の参加者があり、最後にotomewebにより3ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #139868
    otomeweb
    参加者
    17

    【お使いの Snow Monkey のバージョン】 25.4.6
    【お使いの Snow Monkey Blocks のバージョン】20.5.4
    【お使いの Snow Monkey Editor のバージョン】9.4.0
    【お使いの PHP のバージョン】7.4.33
    【お使いのブラウザ】chrome
    【当該サイトのURL】https://x05.piemx.me/%e8%a8%98%e4%ba%8b%e4%b8%80%e8%a6%a7/

    ### 実現したいこと

    VK Searchのキーワード検索が、見出し語だけなく、解説も検索対象になっている
    これを見出し語だけを対象にしたい

    ### 発生している問題

    解説まで検索されてしまうため、目的の用語にたどり着かない

    ### 試したこと

    VK Searchのサポートを読んだところ、基本的にWordPressのデフォルトの検索をそのまま活用しているらしい
    そのため、以下のコードをfunction.phpに記述すればよいとのことだった

    
    function change_my_query( $where, $query ) {
    	if ( $query->is_search && $query->is_main_query() && ! $query->is_admin() ) {
    		$where = preg_replace( "/OR \(wp_posts\.post_content LIKE '[\s\S]*'\)/", '', $where );
    		$where = preg_replace( "/OR \(wp_posts\.post_excerpt LIKE '[\s\S]*'\)/", '', $where );
    	}
    	return $where;
    }
    add_filter('posts_where', 'change_my_query', 10, 2 );
    

    できるだけコードをmy-snow-monkeyに統一したいのだけど、そのまま記述しても動作しなかった
    add_filterでかこまれてない、function以下の部分が my-snow-monkeyの記述方法にあって
    無いからだと思う

    0
    いいねをした人: 居ません
    #139873
    アバター画像キタジマ タカシ
    閲覧者
    2327

    add_filterでかこまれてない

    これは PHP の記述方法の話でして、どちらの場合も処理結果は同じになるので好みで使い分けで大丈夫です。
    function change_my_query みたいに関数に名前をつけると、その関数を再利用したり、フックから関数を外したりすることができます。

    そのまま記述しても動作しなかった

    これは具体的にどう「動作しなかった」のでしょうか? 書いても書かなくても全く結果に影響がなかった、出力結果は変わったけど正しい結果ではなかった等…

    以下のコードをfunction.phpに記述すればよいとのことだった

    「動作しなかった」問題は置いておいたとして、一応先のコードについて見てみたところ、一部に誤りがあるっぽい感じがしたのでちょっと修正してみました。* の後ろに ? を入れています。これがないと必要な条件まで消してしまうので多分あったほうが良さそうだなと。

    ただ、これはこれでもしかしたら状況によっては消したいところが消えないということもあるかもしれないので、ご自身の環境でよく検証が必要だとは思います。

    function change_my_query( $where, $query ) {
    	if ( $query->is_search && $query->is_main_query() && ! $query->is_admin() ) {
    		var_dump( $where );
    		$where = preg_replace( "/OR \(wp_posts\.post_content LIKE '[\s\S]*?'\)/", '', $where );
    		$where = preg_replace( "/OR \(wp_posts\.post_excerpt LIKE '[\s\S]*?'\)/", '', $where );
    		var_dump( $where );
    	}
    	return $where;
    }
    add_filter('posts_where', 'change_my_query', 10, 2 );
    0
    いいねをした人: 居ません
    #139879
    otomeweb
    参加者
    17

    動作しなかったのは、全文検索のままだったということです

    いただいたコードを記述すると、目的通りの検索結果になったのですが
    エラーコードがでます

    string(1033) " AND (((wp_posts.post_title LIKE '{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}トランスジェンダー{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}') OR (wp_posts.post_excerpt LIKE '{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}トランスジェンダー{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}') OR (wp_posts.post_content LIKE '{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}トランスジェンダー{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}'))) AND ((wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'page' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'attachment' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'clinic' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')))" string(647) " AND (((wp_posts.post_title LIKE '{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}トランスジェンダー{7937887898a521553703fa62b309f733ebb0c282e7fa64067a720596c06ce9ea}') )) AND ((wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'page' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'attachment' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')) OR (wp_posts.post_type = 'clinic' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')))"

    これ、消すにはどうしたらよいでしょうか?

    0
    いいねをした人: 居ません
    #139889
    otomeweb
    参加者
    17

    これはエラーメッセージではない? 検索キーがでちゃってる?

    0
    いいねをした人: 居ません
    #139892
    アバター画像キタジマ タカシ
    閲覧者
    2327

    あ、正しく条件が書き換わっているか確認のために

    var_dump( $where );
    

    を入れてたので消してください!

    0
    いいねをした人: 居ません
    #139894
    otomeweb
    参加者
    17

    あ! ちゃんと読めばよかったです
    2箇所ありましたね

    ありがとうございました!
    閉じますね

    1
    いいねをした人:
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • トピック「VK Searchの検索対象を見出し語だけにしたい」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。