-
投稿者投稿
-
2024年6月3日 1:24 AM #139868
【お使いの 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の記述方法にあって
無いからだと思う♥ 0Who liked: No user2024年6月3日 8:04 AM #139873add_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 );
♥ 0Who liked: No user2024年6月3日 12:45 PM #139879動作しなかったのは、全文検索のままだったということです
いただいたコードを記述すると、目的通りの検索結果になったのですが
エラーコードがでます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')))"
これ、消すにはどうしたらよいでしょうか?
♥ 0Who liked: No user2024年6月4日 2:15 AM #139889これはエラーメッセージではない? 検索キーがでちゃってる?
♥ 0Who liked: No user2024年6月4日 6:13 AM #139892あ、正しく条件が書き換わっているか確認のために
var_dump( $where );
を入れてたので消してください!
♥ 0Who liked: No user2024年6月4日 8:17 AM #139894 -
投稿者投稿
- トピック「VK Searchの検索対象を見出し語だけにしたい」には新しい返信をつけることはできません。