プラグインcustomizable-post-listings の改良 (2)

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

CPLの日本語版の改良第2弾です。主にリンク・タイトルの表示部分を改良してあります。

1. ポップアップ・タイトルの表示

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

<a href="http//:アドレス" title="記事の抜粋">表題</a>

記事本文にリンクの張られたタイトルにマウスのポインターを当てたとき、その記事の抜粋を表示することができれば、サイドバーなどの限られた場所に記事の表題をリストし、同時にその内容を表示したい場合に便利な機能となります。
今回は、%post_url%を改良してこの機能を付加してみました。
この%タグは元々はリンクなしのタイトルを表示する機能なのでほとんど使われないと思いますのでこの部分を使用してみました。この部分に以下のようなスクリプトを追加します。

case '%post_url%':
 remove_filter ('the_content',  'wpautop');
 $mycontent = strip_tags($post->post_content);
 //$mycontent = str_replace("\n","",$mycontent);
 //$mycontent = str_replace("\r","",$mycontent);
 $mycontent = mb_substr($mycontent, 0, $excerpt_words)." ...";
 $mycontent = str_replace(' ','&nbsp;',$mycontent);
 $title = the_title('', '', false);
 $ntitle = $title;
 $new = '<a href="'.get_permalink().'" title='.$mycontent.'>'.$ntitle.'</a>';
break;

2行目:自動改行タグ挿入処理を無効にします。
3行目:記事の内容を取得して全てのタグを取り除きます。
6行目:先頭から変数$excerpt_wordsで指定した語数までの文字列を取得します。
7行目:Titleの内容に文字コードのスペースが入っていると、そこで表示が終わってしまうので、HTML文字表記に変換します。
8行目:表題を表示せずに変数に取得します。
10行目:titleに記事内容の抜粋表示を挿入する表題リンクの設定です。

以上の設定では、抜粋内容に改行コードが入っているとそこで表示が止まってしまいます。通常、記事の先頭の部分は、その要約が表示される部分でほとんど改行を差し挟むことがないのでこのような設定にしてあります。どうしても改行以下も表示したいという場合には、4,5行目のコメントアウトを削除してください。そうすれば、CR+LFの改行が全て削除されます。
今回の改良では、ポップアップされる補助情報の日本語訳もしてあります。私の利用している部分だけなので、他の部分については必要に応じて日本語訳してください。

2. 要約表示の改良

前回の要約表示機能の改良は以下のようなものでした。

 
case '%post_content_upto_more%' :
  remove_filter ('the_content',  'wpautop');
  $content = "$post->post_content";
  $content = explode('<!--more-->', $content, 2);
  $new = $content[0];
break;

しかし、このままでは、<!–more–>の入っていない記事では記事の内容が全て表示されてしまうことになります。この点を改良してmoreタグの入っていない記事の場合には、抜粋が表示されるようにしました。以下が改良スクリプトです。

case '%post_content_upto_more%' :
 remove_filter ('the_content',  'wpautop');
 $content = "$post->post_content";
 if (ereg("<!--more-->", $content)) {
 $content = explode('<!--more-->', $content, 2);
 $new = $content[0];}
 else{$content = strip_tags($content);
 $new = mb_substr($content,0,100)." [...]";}
break;

4行目で<!–more–>が入っているかどうかを判断します。入っていれば通常どおりmoreまでの文字列が取得されます(5、6行目)。なければ100語取得して抜粋表示を行います(7、8行目)。

以上の改良は、CPL日本語版 ver 1.01に反映されています。
試してみたい方は、次の記事にアクセスしてください。
「プラグインcustomizable-post-listingsの日本語版」
[追記](2017年3月7日)
PHP7からereg()関数が使えなくなりました。
case ‘%post_content_upto_more%’ のereg()部分を以下のように修正してください。

case '%post_content_upto_more%' :
 remove_filter ('the_content',  'wpautop');
 $content = "$post->post_content";
 if (preg_match("/<!--more-->/", $content)) {
 $content = explode('<!--more-->', $content, 2);
 $new = $content[0];}
 else{$content = strip_tags($content);
 $new = mb_substr($content,0,100)." [...]";}
break;

関連記事



コメントを残す




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