プラグインcustomizable-post-listings の使用法

投稿日: 2008年6月27日 | カテゴリ:『ワードプレス』>記事整理システム(CPL)

プラグインcustomizable-post-listingsは、Ver.3.01がリリースされました。このプラグインは、記事の一覧を表示するには、色々とカスタマイズできるので、便利なプログラムです.その使用法と問題点について紹介いたします。

[注意]

最新のCPLのマニュアルは、以下のバージョンです。こちらを参照してください。
プラグインCPLの操作マニュアル ver 2.0.1-HTML版
プラグインCPLの操作マニュアル ver 2.0.1-PDF版

目次

次のサイトから最新バージョンをダウンロードし、解凍してディレクトリごとpluginにアップロードします。
customizable-post-listings
adminでログインして、「プラグイン」において「使用する」を選択してCPLを有効にします。「設定」-「CPL」でオプションを設定しますが、さしあたりデフォルトのままで結構です。
(注1):CPLを記事やページで使用する場合には、プラグインphpRUNが必要になります。
インストールについては、次の記事を参照してください。
プラグインrunPHPのインストール

<ul>
<?php c2c_get_recent_posts( $num_posts = 5,
$format = "<li>%post_date%: %post_URL%</li>",
$categories = '',
$orderby = 'date',
$order = 'DESC',
$offset = 0,
$date_format = 'm月d日',
$authors = '',
$post_type = 'post',
$post_status = 'publish',
$include_passworded_posts = false,
$extra_sql_where_clause = '' ); ?>
</ul>

説明

  1. 箇条書きの指定です。「ol」を指定すれば番号表示となります。
  2. $num_posts :表示する記事の数を指定します。この場合は、5件です。全部表示したい場合には$num_posts = ” のように書き換えます。
  3. $format :表示するフォーマットを指定します。%変換タグの間に文字列やHTMLタグを埋め込むことができます。この例では、記事の投稿日と題名(URL付き)を表示する設定です。
  4. $categories :カテゴリーのIDを指定します。空の場合には全てのカテゴリを表示します。カテゴリーを複数表示したい場合には、IDをコンマ(またはスペース)で区切って指定します。例えば、$categories = ‘3,10,11’ など。逆に特定のカテゴリーを外したい場合には、そのIDの前にマイナスをつけ記述します。例えば、$categories = ‘-2,3,5’ とすればIDが2,3,5のカテゴリが表示から除かれます。デフォルトは全カテゴリーです。
  5. $orderby :並べ替えの基準となる項目を指定します。この場合には投稿日が指定されています。使用可能なオプションは、「ID」, 「date」(投稿日時), 「modified」(更新日時), 「name」, 「title」(ABC順、日本文字は正確に反映されない)です。デフォルトは「date」です。
  6. $order :並べ替えの順位を指定します。「DESC」は降順、「ASC」は昇順となります。デフォルトは「DESC」です。
  7. $offset :記事の表示を最初のものから指定した数だけ除外します。記事の表示数を指定しないと無効になります。デフォルトは「0」です。
  8. $date_format :日付、時刻のフォーマットを指定します。ここでは、月と日だけの表示になっていますが、「m月d日H時i分」のように指定すれば時刻も表示してくれます。
  9. $authors :authorのIDをスペースで区切って指定します。デフォルトは「”」(全指定)です。
  10. $post_type :記事検索の際に、対象とされる記事のタイプをスペースで区切って指定します。オプションはpost, page, attachmentです。デフォルトはpostです。pageを含めてリスト表示したい場合に便利です。
  11. $post_status :検索の際に、対象とされる記事のステータスをスペースで区切って指定します。オプションはpublish(公開済み), draft, private, pending, future(未公開) です。デフォルトはpublishです。
  12. $include_passworded_posts:パスワードを指定した記事を表示するかどうかを指定します。表示はtrue、非表示はfalseを指定します。 デフォルトはfalseです。

以下は、私が試みた表示方法の幾つかの例です。参考にしてください。

A. 記事の要約を表示する

<ol>
<?php c2c_get_recent_posts( $num_posts = '10',
  $format = "<li>%post_URL%<br>掲載日時:%post_date%<BR>
分類:%post_categories_URL%<br>%post_content_upto_more%</li>",
  $categories = '3,11,30',
  $orderby= 'date',
  $order = 'DESC',
  $offset = 0,
  $date_format = 'Y年m月d日H時i分',
  $authors = '',
  $post_type = 'post',
  $post_status = 'publish',
  $include_passworded_posts = false ); ?>
</ol>

「%post_content_upto_more%」を指定すると、記事の先頭からmoreまでの内容を抽出して表示してくれます。記事の題名や投稿日と共に記事の要約を表示したい場合には便利な機能です。
カテゴリーは、Wordpress、自宅サーバー、アメリカ経済の3カテゴリーに絞ってあります。読んでほしいジャンルをアッピールするのに便利です。

このテンプレート関数は、次のように省略して書くことができます。

<ol>
<?php c2c_get_recent_posts(10,
  "<li>%post_URL%<br>掲載日時:%post_date(Y年m月d日H時i分)%<BR>
分類:%post_categories_URL%<br>%post_content_upto_more%</li>",
  "3,11,30"); ?>
</ol>

デフォルトの変数と値は省略することができます。
値のある変数も順番が間違っていなければ、その変数の記述も省略することができます。
日付%変換タグは、%post_date(Y年m月d日H時i分)%のように、準関数として使用することが可能です。但しこのような使い方ができるのは、日付%変換タグの中でも%post_date%だけですので注意してください。
表示結果

B. 最近更新された記事

<ol>
<?php c2c_get_recently_modified( $num_posts = '10',
$format = "<li>%post_URL%<br />更新日時:%post_modified%<BR>
%post_categories_URL%</li>",
$categories = '3,11,30',
$order = 'DESC',
$offset = 0,
$date_format = 'Y年m月d日H時i分',
$authors = '',
$post_type = 'post',
$post_status = 'publish',
$include_passworded_posts = false,
$extra_sql_where_clause = '' ); ?>
</ol>

関数は、「c2c_get_recently_modified」を使用します。
「%post_modified%」が、更新日時の表示設定です。
表示結果

C. 最近掲載されたコメント

<ol>
<?php c2c_get_recently_commented( $num_posts = '5', 
  $format = "<li>%comments_URL%<br />掲載日時:%last_comment_date%<br />
%comments_fancy%<BR>%last_comment_excerpt%</li>",
  $categories = '',
  $order = 'DESC',
  $offset = 0,
  $date_format = 'Y年m月d日H時i分',
  $authors = '',
  $post_type = 'post',
  $post_status = 'publish',
  $include_passworded_posts = false ); ?>
</ol>

関数は、「c2c_get_recently_commented」を使用します。
「%comments_URL%」は、コメントが掲載された記事の題名(コメントへのURL付き)を表示します。「%last_comment_date%」は、コメントが掲載された日時を表示します。「%comments_fancy%」は、投稿されたコメントの数を表示します。デフォルトでは「1 comment」のように表示されますので、表示例のように「コメント 1件」と表示したい場合には、「設定」-「CPL」の「comments_fancy」の部分を適当に変えてください。「%last_comment_excerpt%」は、コメントの内容の抜粋を表示します。
表示結果

D. カテゴリー毎に全ての記事を表示

<ul>
<?php c2c_get_recent_posts( $num_posts = '',
$format = "<li>%post_date%: %post_URL%</li>",
$categories = '30',
$orderby = 'date',
$order = 'DESC',
$offset = 0,
$date_format = 'm月d日',
$authors = '',
$post_type = 'post',
$post_status = 'publish',
$include_passworded_posts = false,
$extra_sql_where_clause = '' ); ?>
</ul>

$categories = ’30’ のように表示したいカテゴリーのIDを指定します。この例では、「Wordpress」になります。
表示結果

E. サイドバーに記事の抜粋を表示
次の例は、サイドバーに記事の抜粋を表示する場合の設定です。自分のテーマの構造に踏まえて設定を行ってください。また、CPLは、抜粋スクリプトを日本語に対応させた改良版(以降、「CPL日本語版」と呼ぶ)を使用しています。このCPL日本語版については、「プラグインcustomizable-post-listingsの日本語版」を参照してください。

adminでログインして、「設定」-「CPL」のオプションで表示する語数(「Excerpt words」の項)を指定します。この例では60語に指定してあります。オプションの値を変更したら必ず「Save Changes」(日本語版「変更を保存」)ボタンをクリックし変更を反映させてください。

sidebar.phpの適当な部分に次のスクリプトを追加します。

<ul>
<?php c2c_get_recent_posts( $num_posts = '3',
  $format = "<li>%post_URL%:%post_excerpt%</li>",
  $categories = '30',
  $orderby = 'date',
  $order = 'DESC',
  $offset = 0,
  $date_format = 'm月d日',
  $authors = '',
  $post_type = 'post',
  $post_status = 'publish',
  $include_passworded_posts = false,
  $extra_sql_where_clause = '' ); ?>
</ul>

F. 関数を使用してフォントの体裁を変更する例
PHP関数を指定して%タグを引数に取ることもできます。次の例は、自作のPHP関数を使用して、%タグが表示する内容のフォントの体裁を変更する例です。もちろん、既存のPHP関数も利用できますのでユーザーの実践的目的に合わせてプログラムを作成してみてください。

<?php
function fontsize_test($data,$size,$color,$char){
$xx = "<font size=\"$size\" color=\"$color\" >".$char.$data."</font>";
return $xx;
}
?>
<div style="font-size:12pt;font-weight:bold;color:#000;padding:10px 0 0px 10px;">
最近掲載された記事</div>
<ol>
<?php c2c_get_recent_posts( $num_posts = '10',
  $format = "<li>%post_URL%<br />
%function(fontsize_test,%post_date%,2,#000,掲載日時:)%<br />
%function(fontsize_test,%post_categories_URL%,2,,分類:)%<br />
%function(fontsize_test,%post_content_upto_more%,2,#883333,)%</li>",
  $categories = '3,10,30',
  $orderby= 'date',
  $order = 'DESC',
  $offset = 0,
  $date_format = 'Y年m月d日H時i分',
  $authors = '',
  $post_type = 'post',
  $post_status = 'publish',
  $include_passworded_posts = false ); ?>
</ol>

2行目:関数名と引数の定義です。
3行目:フォント加工部分の挿入句です。文字列指定特殊文字(「" "」)の内部で同じ特殊文字を使用する場合には、エスケープ文字「\」を前に挿入してください。$sizeにはフォントサイズ(1、2、3…など)、$colorにはフォントカラー(#FF0000あるいはredなど)、$dataには%タグ、$charには任意の文字列を代入します。
4行目:変数$xxの値を返します。
13行目:上記に定義した関数を%post_date%(掲載日時)に適用しています。%タグ関数functionの第1番目の引数として上記のPHP関数名を指定し、その関数の引数である$data,$size,$color,$charに、それぞれ「%post_date%」,「2」,「#000」,「掲載日時:」を代入しています。
14行目:同じく、%post_categories_URL%(カテゴリーURL)タグの表示体裁の変更です。
15行目:同じく、%post_content_upto_more%(要約)の表示体裁の変更です。
表示結果

注意:同じ機能の関数をページやテーマファイル(index.phpなど)で複数使用する場合には、関数名を変えてください(例えば上記の関数の場合には、fontsize_HMなどと)。同じ関数名だと、それが使用されているページやサイドバーが同時に表示されたとき競合してうまく表示されないからです。

G. 記事のリストを表形式に表示する

これまでは、記事はリスト形式で並び変えていましたが、表形式でも表示することができます。以下は登山日記の一部を表形式に並べて表示するスクリプトの例です。

<table border="5" bordercolor="008000" cellpadding="3">
<?php c2c_get_recent_posts( $num_posts = '10',
$format = "<tr><td width=\"150\" bgcolor=\"DCFFFF\">%post_URL%</td>
<td width=\"450\" bgcolor=\"FFFFDC\">%post_content_upto_more%</td></tr>",
$categories = '6',
$orderby = 'date',
$order = 'DESC',
$offset = 0,
$date_format = 'm月d日',
$authors = '',
$post_type = 'post',
$post_status = 'publish',
$include_passworded_posts = false,
$extra_sql_where_clause = '' ); ?>
</table>

3行目と4行目が表形式を指定するスクリプトです。ダブルクオーテンションマークをエスケープさせることを除けば、HTMLで表を作るのと同じ要領です。このように、特殊文字をエスケープさせることを忘れなければ、大抵のHTMLタグは$format変数の内部で使用できます。自分の目的に合わせて挑戦してみてください。
表示結果

H. 題名のポップアップ・ウィンドウに記事の抜粋を表示させる

一般に、リンクが張られた題名にマウスのポインターを当てるとポップアップ・ウィンドウが開いてその表題に関する情報が表示されます。この表示の内容は、以下のようなリンク設定タグのtitle部分で指定します。

<a href="http//:アドレス" title="ここに指定" >表題</a>

記事本文にリンクの張られたタイトルにマウスのポインターを当てたとき、その記事の抜粋を表示することができれば、サイドバーなどの限られた場所に記事の表題をリストし、同時にその内容を表示したい場合に便利な機能となります。
例えば、表題にポップアップ・ウィンドウを表示させるには次のようなスクリプトを使用します。6行目の%post_url%がこれを表示させる%タグです。

<table border="1" cellpadding="2" cellspacing="0">
<tr align="center" bgcolor="#ccff66"><td width="300"><strong>タイトル</strong></td>
<td width="110"><strong>掲載日</strong></td><td width="180"><strong>分類</strong>
</td></tr>
<?php c2c_get_recent_posts( $num_posts = '',
  $format = "<tr><td>%post_url%</td><td>%post_date%</td><td>%post_categories_URL%</td></tr>",
  $categories = '6',
  $orderby= 'date',
  $order = 'DESC',
  $offset = 0,
  $date_format = 'Y年m月d日',
  $authors = '',
  $post_type = 'post',
  $post_status = 'publish',
  $include_passworded_posts = false ); ?>
</table>
</div>

表示結果をクリックし、題名にマウスのポインターを当ててみてください。その記事の抜粋が表示されるはずです。
表示結果

問題点

  • オリジナルの「%post_excerpt%」は、日本語の記事ではうまく働かないようです。「追記」に記したようにプログラムを改良して抜粋も表示できるようにしました。しかし、本文の要約を表示したい場合には、%post_content_upto_more%を使用して表示したほうが安定性もあり、確実な表示結果が得られますので、こちらの使用をお勧めいたします。

追記
抜粋の問題を解決するためにこのプラグインを改良してみました。「プラグインcustomizable-post-listingsの改良」を参照してください。(2008年8月22日)


関連記事



プラグインcustomizable-post-listings の使用法” への1件のコメント

  1. ピンバック: できるかな? - Web編 » Blog Archive » customizable-post-listingsを使ってみる

コメントを残す




空欄に計算式を満たす数値を記入してください(必須)