トリミング3

閲覧数: 210(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)タグ, , ,
Zabbix 5.0を導入する
blank

もうね、完全にネタ切れw、ITネタで突っ走るしかない。今回は久しぶりのZABBIXネタと、それが稼働  続きを読む

トリミング2
blank

Wordpressの場合、Mediawikiより手厚い日本語環境(マルチバイト対応)が用意されている  続きを読む

最近のいろいろ
blank

先日の記事で「写真を整理」していたら、、、という話をしましたが。不要な写真もありストレージ容量を確保  続きを読む

最終更新日
blank

投稿日は表示されるけど、その後の修正は当然のことならが投稿日には反映されない。一般的な投稿ならそれほ  続きを読む

究極のt2.nanoインスタ...
blank

EC2の中で最小インスタンスタイプである「t2.nano」はCPUが1コアでメモリは512MBです。  続きを読む

検索に悩む
blank

インターネットを使って情報を入手する時、得られた情報の品質は、検索サイトの精度というよりは、検索に使  続きを読む

スポンサーリンク

コメントを残す

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