トリミング3

閲覧数: 213(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

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

session_cookie
blank

Amazon Linuxのupdateでphpが5.6.8から5.6.9へ更新されたら、Tsubop  続きを読む

Elasticsearch Sudach...
blank

Sudachiプラグインである。最新バージョンではElasticsearchの古いバージョンがサポー  続きを読む

おすすめ記事
blank

テーマのカスタマイズで「Featured Content」というオプションがあります。日本語では「お  続きを読む

最終更新日’18
blank

今回のテーマ更新では、テーマ自体の改修は行わないポリシーですが、投稿日と最終更新日はやはり表示したい  続きを読む

パンくずリスト詳細
blank

テーマの「マイナーチェンジ」に伴って「パンくずリスト」の仕様を若干変更しました。一つ前のテーマではパ  続きを読む

スポンサーリンク

コメントを残す

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