拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
RelatedEntriesプラグインの改造
拙著「ブログ簡単パワーアップMovable Typeスーパーカスタマイズテクニック」の中で、「RelatedEntries」というプラグインを紹介しています。
このプラグインは、エントリー間の関連付けを設定して、エントリーに関連する他のエントリーを一覧表示できるようにするものです。
このプラグインに対して要望がありましたので、改造方法を紹介します。
1.すべてのBlogから関連するエントリーを取り出したい
RelatedEntriesプラグインの標準の動作では、エントリーと同一のブログからのみ関連するエントリーを取り出します。
しかし、複数のBlogを管理している場合、それらすべてのBlogから関連するエントリーを取り出したい場合もあります。
その場合は、RelaatedEntries.plの以下の2箇所を書き換えます。
・183行目
書き換え前:{ blog_id => $blog_id },
書き換え後:{},
・221行目
書き換え前:my $entry_count = MT::Entry->count({ blog_id => $blog_id });
書き換え後:my $entry_count = MT::Entry->count();
2.タイトル順に並べ替えて出力する
RelatedEntriesプラグインの標準の動作では、関連するエントリーは日付順に並べ替えて出力します。
ただ、これをタイトル順に変えたいという場合もあります。
それには、RelaatedEntries.plの34行目~48行目を以下のように差し替えます。
・差し替え前
# get attributes $lastn = $args->{'lastn'} or $lastn = 0; $sort_order = $args->{'sort_order'}; if ($sort_order ne 'ascend' && $sort_order ne 'descend') { $sort_order = $blog->sort_order_posts; } # load related entries my @related_entries; &load_related_entries($entry->id, \@related_entries); if ($sort_order eq 'ascend') { @related_entries = sort { $a->created_on <=> $b->created_on } @related_entries; } else { @related_entries = sort { $b->created_on <=> $a->created_on } @related_entries; }
・差し替え後
# get attributes $lastn = $args->{'lastn'} or $lastn = 0; $sort_order = $args->{'sort_order'}; if ($sort_order ne 'ascend' && $sort_order ne 'descend') { $sort_order = $blog->sort_order_posts; } my $sort_by = $args->{'sort_by'}; $sort_by = '' if ($sort_by ne 'title'); # load related entries my @related_entries; &load_related_entries($entry->id, \@related_entries); if ($sort_by eq 'title') @related_entries; } else { @related_entries = sort { $b->title cmp $a->title } @related_entries; } } else @related_entries; } else { @related_entries = sort { $b->created_on <=> $a->created_on } @related_entries; } }
これにより、MTEntriesRelatedEntriesタグに「sort_by」というアトリビュートが追加されます。
「sort_by="title"」とすると、エントリーのタイトルで並べ替えられるようになります。それ以外の場合はエントリーの日付順で並べ替えられます。
また、「sort_order」アトリビュートと併用して、昇順/降順を切り替えることもできます。