CG
(@du-bist-der-lenz)
数値はいくつにしていますか。日本語は句読点でつながっているので、一文字と解釈されるのはご存知でしょうが英文で確認しましょう。
init.php の 347行目からが、記事抜粋に関する処理のようですが、
strlen を使って文字数チェックしています。
実際の関数 wp_rp_text_shorten においては(274行目〜)、mb_substrとマルチバイト対応の関数を使っているのに、文字数チェックには対応していない strlen を使っているのでおかしくなってるように思います。この2箇所を mb_strlen に直せばいけるような気がします。
strlen は文字数ではなくバイト数でのチェックのため、WordPressのUTF-8文字だと1つの日本語 = 3バイトと判定されてしまって、
function wp_rp_text_shorten($text, $max_chars) {
$shortened_text = mb_substr($text, 0, $max_chars - strlen(WP_RP_EXCERPT_SHORTENED_SYMBOL));
の処理部分で、たとえば日本語で10文字(30バイト)とした場合、5文字制限(15バイト)したら、
$max_chars – strlen(WP_RP_EXCERPT_SHORTENED_SYMBOL) がおそらく 30 – 15 = 15なのですが、mb_strlenが 15文字と判断して、10文字全部が表示されちゃう、、ってことなんじゃないかなーと思います。
これを逆手に取るなら、投稿文字数を25(バイト)にすれば、日本語で10文字なら 5文字制限になるかなぁ(30-25)とか思います。ややこしい…
Du bist der Lenz様
メッセージ有難うございます。
数値は5にしているのですが、全文表示されてしまうんですよね。。。
1にしても同じなんです。
kimipooh様
教えて頂き有難うございます。
20文字で […] という表示が出て
25文字で、4文字と[…]という表示が出てきました!
大変助かりました。
本当に有難うございました!!