2012年05月23日
ある意味奇跡!!Wordpressのキーワード除外検索成功!
日頃の技術研究が実をつけたのか、CMS【Wordpress(ワードプレス)】の検索機能にて少なくとも日本語ユーザではまだ実装公開されていない、キーワード除外検索を付けることに成功しました!!
※【少なくとも日本語ユーザではまだ実装公開されていない】とは、今日現在google検索にて「wordpress 検索 キーワード除外」で検索して得られた結果によります。
これは結構ニーズが高いため、まずはポイントだけお教えします。
なお、今回の動作環境は、【PHP5.2.x】、【WP3.3.1】です。
いじるファイルは1つで、【wp_includes】ディレクトリ内の「query.php」になります。
また、別途利用テーマ内に【search.php】が必要です。
ポイントは、Googleのように「-」を付けたら除外に回し、それ以外のキーワードを検索に回すという処理です。
$q['s']が$wp_queryでグローバル保存されたキーワード変数ですので、これを3枚おろしにするかが腕の見せ所。
配列を2つ作り、一方には正規の検索、もう一方には除外検索の配列として格納します。
それらを、後に続くSQL文にうまくつなぎあわせてしまえば、除外検索構築作業終了となりました。
まあ、途中でちゃんと3枚おろしにされているか確認すべく、除外項目を表示できるよう「general-template.php」の中に既存の検索のものを流用して独自関数を作ってしまいましたが、PHP及びSQLを本格的に始めてたかが5ヶ月目の人間が、除外検索を作れたとは、なかなか面白い展開だと思います。
なお、Wordpressの検索はカスタムフィールドなどを除く全投稿タイプ検索ですので、queryループ前に除外条件を付ける場合は、必ず
【<?php
global $query_string;
query_posts($query_string . "&post_type=post");
?>】(ページを除外し、投稿のみの例)
のように、対象の絞り込みを行なえば汎用的に使えます。
アップデートの場合に消される危険性が高いので、常時ローカルに当該部分の差分バックアップを忘れなければ、結構使えると思います。
なお、余談ですが、Adminメニューが一部消えている現象が発生して、何かがバグったのか!?と焦ったものの、よくよく思い返してみるに、昨日の夜誤って【languages】ディレクトリを上げてしまい、それをキャンセルしたものの、アップロードが止まらない中でDreamWeaverがフリーズを起こし、中途半端な状態で上がったために発生したものでした。
何かフリーズした場合は、上げ直すのも方策です。
それでこのトラブルは解決しました。
※実物はまだテスト環境にあるため、仮に自サイトに設置してみました。
環境は同じくWP3.3.1です。
※【少なくとも日本語ユーザではまだ実装公開されていない】とは、今日現在google検索にて「wordpress 検索 キーワード除外」で検索して得られた結果によります。
これは結構ニーズが高いため、まずはポイントだけお教えします。
なお、今回の動作環境は、【PHP5.2.x】、【WP3.3.1】です。
いじるファイルは1つで、【wp_includes】ディレクトリ内の「query.php」になります。
また、別途利用テーマ内に【search.php】が必要です。
ポイントは、Googleのように「-」を付けたら除外に回し、それ以外のキーワードを検索に回すという処理です。
$q['s']が$wp_queryでグローバル保存されたキーワード変数ですので、これを3枚おろしにするかが腕の見せ所。
配列を2つ作り、一方には正規の検索、もう一方には除外検索の配列として格納します。
それらを、後に続くSQL文にうまくつなぎあわせてしまえば、除外検索構築作業終了となりました。
まあ、途中でちゃんと3枚おろしにされているか確認すべく、除外項目を表示できるよう「general-template.php」の中に既存の検索のものを流用して独自関数を作ってしまいましたが、PHP及びSQLを本格的に始めてたかが5ヶ月目の人間が、除外検索を作れたとは、なかなか面白い展開だと思います。
なお、Wordpressの検索はカスタムフィールドなどを除く全投稿タイプ検索ですので、queryループ前に除外条件を付ける場合は、必ず
【<?php
global $query_string;
query_posts($query_string . "&post_type=post");
?>】(ページを除外し、投稿のみの例)
のように、対象の絞り込みを行なえば汎用的に使えます。
アップデートの場合に消される危険性が高いので、常時ローカルに当該部分の差分バックアップを忘れなければ、結構使えると思います。
なお、余談ですが、Adminメニューが一部消えている現象が発生して、何かがバグったのか!?と焦ったものの、よくよく思い返してみるに、昨日の夜誤って【languages】ディレクトリを上げてしまい、それをキャンセルしたものの、アップロードが止まらない中でDreamWeaverがフリーズを起こし、中途半端な状態で上がったために発生したものでした。
何かフリーズした場合は、上げ直すのも方策です。
それでこのトラブルは解決しました。
※実物はまだテスト環境にあるため、仮に自サイトに設置してみました。
環境は同じくWP3.3.1です。
7年ぶりにExcelのマクロを組む
自社サイトの運用レベル向上策展開中
SSLサーバ証明書の2016年問題に対応中
今週末は変則的なスケジュール
OpenSSL脆弱性の対応に追われる
前職で作ったサイトが地元紙で紹介される
自社サイトの運用レベル向上策展開中
SSLサーバ証明書の2016年問題に対応中
今週末は変則的なスケジュール
OpenSSL脆弱性の対応に追われる
前職で作ったサイトが地元紙で紹介される
Posted by yochi at 16:14│Comments(0)
│Web制作・SEO関係
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。