トリミング3

閲覧数: 205(0)

先日から投稿ページ下部に、関連記事を表示するプラグインを導入しました。人気プラグインである、WordPress Related Postsというのを使っています。関連記事の表示形式などの設定が豊富で、様々な形式で表示できます。今使っているテーマとの相性やモバイルでの表示を考えて、選べるテーマの中からmodernを選択しました。

設定の中に、記事タイトルだけじゃなくて、サムネイルや抜粋を表示する選択が出来るので、それを選択した結果、表示されるようになったのが、これです。

スクリーンショット 2015-10-24 10.08.37

アイキャッチ画像が設定されていると、それがサムネイル表示され、投稿日とタイトルの後に、指定した文字列の抜粋がつきます。いい感じです。

んっ?

上の2つと下の3つ、比べると明らかに抜粋文字数が違いますよね?設定上は150文字、日本語にすると75文字、投稿日から数えて、タイトルも含むので、多少の違いはありますが、ちょっと違いすぎる。仕方ないのでコードを見てみます。プラグインディレクトリのinit.phpです。

function wp_rp_text_shorten($text, $max_chars) {
      $shortened_text = mb_substr($text, 0, $max_chars - strlen(WP_RP_EXCERPT_SHORTENED_SYMBOL));
      $shortened_words = explode(" ", $shortened_text);
      $shortened_size = count($shortened_words);
      if ($shortened_size > 1) {
              $shortened_words = array_slice($shortened_words, 0, $shortened_size - 1);
              $shortened_text = implode(" ", $shortened_words);
      }
        return $shortened_text . WP_RP_EXCERPT_SHORTENED_SYMBOL; //'...';
}

なるほど、一応漢字などのマルチバイトのことを考慮して、substr関数ではなく、mb_substr関数を使っている。気持ちはわかるが、それじゃないw ここで使うべきなのは、mb_strimwidth関数。その後の、英単語の禁則処理、切っちゃいけないところで切らないように、特定の文字かスペースで切り捨てる処理?みたいなのが悪さをしているようなので、次のように修正する。

function wp_rp_text_shorten($text, $max_chars) {
      $shortened_text = mb_strimwidth($text, 0, $max_chars - strlen(WP_RP_EXCERPT_SHORTENED_SYMBOL));
        return $shortened_text . WP_RP_EXCERPT_SHORTENED_SYMBOL; //'...';
}

そうするとこんな結果に。ほぼ揃いましたね。人気のプラグインなのに、この組み合わせで使っている人っていないのかな?日本語が母国語じゃない人に、いくら説明してもこの問題わかってくれないんですよね。説明のまずさもあるけど、そもそも理解できないみたい。なので、最近は自分の中で対処するだけで、説明することは無くなりました。今回は例外中の例外ですw

スクリーンショット 2015-10-24 10.09.14

※コメントを非公開としたので、以下に再掲します。
最終的に、改行記号で区切る設定としました。

function wp_rp_text_shorten($text, $max_chars) {
      $shortened_text = mb_strimwidth($text, 0, $max_chars - strlen(WP_RP_EXCERPT_SHORTENED_SYMBOL));
      $shortened_words = explode("&nbsp", $shortened_text);
      $shortened_size = count($shortened_words);
      if ($shortened_size > 1) {
              $shortened_words = array_slice($shortened_words, 0, $shortened_size - 1);
              $shortened_text = implode(" ", $shortened_words);
      }
        return $shortened_text . WP_RP_EXCERPT_SHORTENED_SYMBOL; //'...';
}

なんかプラグインの中で、勝手に制作元のサーバーにアクセスするみたいな動きがあったので、URL設定を無効にしました。何か不都合あるかな?様子見。

//define('WP_RP_STATIC_BASE_URL', 'https://wprp.zemanta.com/static/');
//define("WP_RP_ZEMANTA_API_URL", "http://api.zemanta.com/services/rest/0.0/");
//define("WP_RP_ZEMANTA_SUBSCRIPTION_URL", "http://prefs.zemanta.com/api/");
define('WP_RP_STATIC_THEMES_PATH', 'static/themes/');
define('WP_RP_STATIC_JSON_PATH', 'json/');
//define('WP_RP_CONTENT_BASE_URL', 'https://wprp.zemanta.com/static/');
//define("WP_RP_ZEMANTA_UPLOAD_URL", "http://prefs.zemanta.com/api/upload-articles/");
//define("WP_RP_ZEMANTA_ARTICLE_COUNT_URL", "http://prefs.zemanta.com/api/article-count/");

関連記事の表示位置調整のため、/static/themes/modern.cssにmargin-top: 4em;を追加しているのでメモ。

.wp_rp_wrap {
        margin-top: 4em; 
        clear: both;
}

config.phpで省略記号[…]を…に変更します。

//define("WP_RP_EXCERPT_SHORTENED_SYMBOL", " […]");
define("WP_RP_EXCERPT_SHORTENED_SYMBOL", " …");
【最終更新日: 2019年6月14日】
カテゴリーIT閑話, 公開タグ, , ,
関連記事
関連記事の大原則
blank
2019年6月16日

ググったりしてあるページにたどり着いた閲覧者に対して、それに関連する記事を提示して少しでもサイトの滞  続きを読む

関連記事プラグイン
blank
2019年6月14日

脆弱性のため公開中止となったプラグインの代わりに選んだ、現在の「関連記事」用プラグインの設定を保存し  続きを読む

プラグインの脆弱性
blank
2019年5月29日

トップページから記事を選択して個別のページへ飛んだ後、本文の下に関連記事を表示するために使用していた  続きを読む

子テーマ化詳細
blank
2017年9月23日

子テーマ化にあたって具体的に修正した部分の説明をします。まずは「header.php」から。サイトの  続きを読む

テーマリニューアル2017
blank
2017年7月21日

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

関連記事
blank
2016年11月16日

Related Postsと言うプラグインで、関連記事をページ下部に表示しています。これまでは、Wo  続きを読む

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください