拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
SearchEntriesプラグイン(Data API対応その1・準備作業)
SearchEntriesプラグインを、Movable Type 6のData APIに対応させました。
複数ブログにまたがる検索も可能です。
検索条件は従来通りテンプレートタグで書き、検索結果をData APIで得る形を取ります。
今日は、Data APIで検索する際の準備作業を解説します。
1.プラグインのインストール
プラグインは以下からダウンロードします。
ダウンロードしたZipファイルを解凍すると、「plugins」と「mt-static」のフォルダができます。
これらのフォルダを、Movable Typeのインストール先のディレクトリにアップロードします。
2.Movable Typeのコアのコードの書き換え
当プラグインでは、Movable Typeのコアのコードを一部書き換える必要があります。
2-1.並べ替えのための書き換え
カスタムフィールドの値で記事を並べ替える必要がある場合は、「lib」→「MT」→「ObjectDriver」→「Driver」ディレクトリにある「DBI.pm」の550行目~575行目を書き換えます。
書き換え方は、Movable Type 5.2の場合と同じです。
なお、この書き換えは、Data APIで検索しない場合でも行います。
2-2.Data API用の書き換え
Data APIで検索するために、Movable Typeのインストール先で、「lib」→「MT」→「DataAPI」→「Endpoint」ディレクトリにある「Common.pm」の378行目~400行目を、以下のように書き換えます。
書き換え前
my %load_options = ( terms => { %$terms, @blog_id_term }, args => {%$args}, sort_by => $q->param('sortBy') || '', sort_order => $q->param('sortOrder') || '', limit => $limit, offset => $offset, scope => $scope, blog => $blog, blog_id => $blog_id, blog_ids => $blog_ids, %$options, ); my %count_options = ( terms => { %$terms, @blog_id_term }, args => {%$args}, scope => $scope, blog => $blog, blog_id => $blog_id, blog_ids => $blog_ids, %$options, );
書き換え後
my $opt_terms; if (ref $terms eq 'HASH') { $opt_terms = { %$terms, @blog_id_term }; } else { $opt_terms = [ @$terms ]; if (@blog_id_term) { push @{$opt_terms}, ( '-and', { blog_id => $blog_id_term[1] } ); }; } my %load_options = ( terms => $opt_terms, args => {%$args}, sort_by => $q->param('sortBy') || '', sort_order => $q->param('sortOrder') || '', limit => $limit, offset => $offset, scope => $scope, blog => $blog, blog_id => $blog_id, blog_ids => $blog_ids, %$options, ); my %count_options = ( terms => $opt_terms, args => {%$args}, scope => $scope, blog => $blog, blog_id => $blog_id, blog_ids => $blog_ids, %$options, );
3.検索用テンプレートを判別するためのカスタムフィールドの作成
Data APIの検索用テンプレートかどうかを判断するために、検索対象のブログ(またはウェブサイト)に、以下のカスタムフィールドを作成します。
システムオブジェクト | テンプレート |
---|---|
名前 | DataAPI検索 |
種類 | チェックボックス |
必須? | チェックをオフにする |
規定値 | チェックをオフにする |
ベースネーム | data_api_search_template |
なお、説明とテンプレートタグは、自由に決めていただいて構いません。
また、複数のブログ(ウェブサイト)にまたがって検索する場合は、その中のどれか1つで上記のカスタムフィールドを作ります。