サポート » 使い方全般 » 記事タイトルを(半角・全角文字でカウント数を分けて)短縮表示する方

  • 解決済 kh45

    (@kh45)


    こちらのフォーラム記事を参考に、記事タイトルを短縮表示する事はできたのですが、

    ◆記事のタイトルを短縮表示してくれるプラグイン
    http://ja.forums.wordpress.org/topic/1398?replies=3

    半角文字で20字、全角文字で10字というように、
    文字数のカウント方法を全角と半角で分けて表示させたいのですが、
    可能でしょうか。

    ————————————————————–
    上記フォーラムでの記述方法

    function.phpに以下を記述

    function trim_str_by_chars( $str, $len, $echo = true, $suffix = '...', $encoding = 'UTF-8' ) {
    	if ( ! function_exists( 'mb_substr' ) || ! function_exists( 'mb_strlen' ) ) {
    		return $str;
    	}
    	$len = (int)$len;
    	if ( mb_strlen( $str = wp_specialchars_decode( strip_tags( $str ), ENT_QUOTES, $encoding ), $encoding ) > $len ) {
    		$str = wp_specialchars( mb_substr( $str, 0, $len, $encoding ) . $suffix );
    	}
    	if ( $echo ) {
    		echo $str;
    	} else {
    		return $str;
    	}
    }

    テンプレートのタイトルを出力している箇所を以下に変更
    <?php trim_str_by_chars( get_the_title(), 10 ); ?>

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター gatespace

    (@gatespace)

    質問が重複しています。
    http://ja.forums.wordpress.org/topic/13348?replies=1#post-47254

    どちらが正しい情報ですか?

    トピック投稿者 kh45

    (@kh45)

    >gatespaceさん

    ご連絡いただきありがとうございます。
    こちらが正しい情報になります。

    質問を重複して投稿してしまっていました。
    もう一つのトピックスは「解決済み」に変更させていただきました。

    よろしくお願いいたします。

    こんにちは

    半角は、半角英数ですよね でしたら、以下でどうですか?

    function trim_str_by_chars( $str, $len_ja, $len_en, $echo = true, $suffix = '...', $encoding = 'UTF-8' ) {
    	if ( ! function_exists( 'mb_substr' ) || ! function_exists( 'mb_strlen' ) ) {
    		return $str;
    	}
    
    	$len = (int)$len_ja;
    
    	if (strlen($str) === mb_strlen($str,$encoding)) {
    		$len = (int) $len_en;
    	} 
    
    	if ( mb_strlen( $str = wp_specialchars_decode( strip_tags( $str ), ENT_QUOTES, $encoding ), $encoding ) > $len ) {
    		$str = wp_specialchars( mb_substr( $str, 0, $len, $encoding ) . $suffix );
    	}
    	if ( $echo ) {
    		echo $str;
    	} else {
    		return $str;
    	}
    }
    <?php trim_str_by_chars( get_the_title(), 10 , 20 ); ?>
    トピック投稿者 kh45

    (@kh45)

    >nobitaさん

    早々にご返信くださり、ありがとうございます!

    >半角は、半角英数ですよね
    はい、半角英数です。

    早速、試させていただきました。

    <?php trim_str_by_chars( get_the_title(), 10 , 20 ); ?>

    全角、半角共に、10文字表示になってしまいました。
    「10」の箇所を変更すると、全角・半角共に文字数が変更され、
    「20」の箇所を変更しても変化がないようです。

    度々恐れ入ります。
    一度ご確認いただけますと幸いです。

    よろしくお願いいたします。

    試してみました。
    以下のような結果になっているので、私の考えたとおりには動いていそうです

    <?php trim_str_by_chars( 'tt12345678dddddddd', 5, 10 );?>
    <?php //結果:tt12345678... ?>
    <?php trim_str_by_chars( 'あいうえおかきくけこさしすせそ', 5, 10 );?>
    <?php //結果:あいうえお... ?>
    <?php trim_str_by_chars( 't 12345678dddddddd', 5, 10 );?>
    <?php //結果:t 12345678... ?>

    私の、質問の解釈おかしいければ、お手数おかけしましたが、忘れてください。

    トピック投稿者 kh45

    (@kh45)

    >nobitaさん

    ご連絡ありがとうございます。

    たいへん失礼いたしました。
    再度、設定しなおしたらきちんと表示されました!
    私のコピペミスかなにかだったようです・・・

    お手間おかけして、申し訳ございませんでした。
    ありがとうございました!!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「記事タイトルを(半角・全角文字でカウント数を分けて)短縮表示する方」には新たに返信することはできません。