5で構築を行うサイトにおいてカスタムフィールドを含めたサイト内検索を実装する必要がありました。5ではダイナミック検索(AltSearchプラグイン)を利用することでカスタムフィールドを含めた検索が可能になりますが、特定の記事を除外するにはカスタマイズを行う必要がありますので、その方法を紹介します。今回は記事・ウェブページ両方を除外出来るようにしたかったので、記事・ウェブページにカスタムフィールドを作成します。全ブログで利用する場合はシステムのカスタムフィールドで作成すると良いでしょう。テンプレートタグは任意で構いません。page_exclude_altsearchプラグインの作成ダイナミック検索ではコールバックプラグインを作るための仕組みが用意されています。そこで、コールバックプラグインを作成し、上記カスタムフィールドにチェックが入った記事・ウェブページを除外するSQLを追加します。ダイナミック検索ではサーチとカウントで処理が異なるため、二つのコールバックで処理を行う必要があります。コールバックを利用します。下記PHPコードを記述したファイルを設置します。/mt/addons/DynamicMTML.pack/php/callbacks/dynamicmtml\_pack\_pre\_altsearch.php※callbacksディレクトリがない場合は作成してください。);}カウントのコールバックサーチ処理にだけSQLの追加を行うと、検索ヒット件数はカスタマイズを行う前の数になっています。そのためヒット件数にズレが生じて不要なページ送りが出来るなど不都合が生じます。同様にカウントの処理もカスタマイズすることでヒット件数を一致するようにします。コールバックを利用します。下記PHPコードを記述したファイルを設置します。);}まとめ以上のプラグインを設置することでダイナミック検索から特定の記事・ウェブページを除外出来るようになります。カスタムフィールドの種別やベースネームが異なる場合は調整が必要になりますが、SQLをカスタマイズすることで標準機能では実現出来ない検索が可能になります。