サポート » 使い方全般 » (再)英語設定だとthe_excerptの文字数を変更できない

  • 解決済 31.com

    (@31com)


    the_excerptの文字数を変更したいのですが、
    当ブログの言語は英語にしています。

    で、

    functions.php に

    function new_excerpt_mblength($length) {
    return 40;
    }
    add_filter(‘excerpt_mblength’, ‘new_excerpt_mblength’);

    と加えても、300文字くらい表示されています。(抜粋にはなっている)

    で、このコードを削除すると、逆に、抜粋ではなくなって本文まるまる表示してしまいます。

    なお、WPの設定で日本語にすると、上記のどちらでも、ちゃんと抜粋文字数が変更されます。

    いったい、英語設定のままで、これを実現させるにはどうすればいいのでしょうか?

    なお、当たり前と思って、
    WP Multibyte Patch を有効にしています。

    よろしくお願いします。

    p.s.
    function new_excerpt_length($length) {
    return 40;
    }
    add_filter(‘excerpt_length’, ‘new_excerpt_length’);
    でもだめでした。

    また、テーマは「responsive」という名前のテーマを使っています、

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • WP Multibyte Patchはロケールによって動作が変わるようになっています。初期状態で手を加えていなかったら日本語設定でのみ動作する、と考えてください。

    具体的には:

    if ( defined( 'WP_PLUGIN_URL' ) ) {
    	if ( file_exists( dirname( __FILE__ ) . '/ext/' . get_locale() . '/class.php' ) ) {
    		require_once dirname( __FILE__ ) . '/ext/' . get_locale() . '/class.php';
    		$GLOBALS['wpmp'] = new multibyte_patch_ext();
    	}
    	elseif ( file_exists( dirname( __FILE__ ) . '/ext/default/class.php' ) ) {
    		require_once dirname( __FILE__ ) . '/ext/default/class.php';
    		$GLOBALS['wpmp'] = new multibyte_patch_ext();
    	}
    	else
    		$GLOBALS['wpmp'] = new multibyte_patch();
    }

    プラグインの特性上当然の設定なのですが、もし英語設定でも動くようにするにはwp-multibyte-patch/ext/ja を wp-multibyte-patch/ext/en_US にコピーすればいいのかな。

    トピック投稿者 31.com

    (@31com)

    Hinaloe様
    おはようございます

    >もし英語設定でも動くようにするにはwp-multibyte-patch/ext/ja を wp-multibyte-patch/ext/en_US にコピーすればいいのかな。

    これをしたら、
    [code]
    function new_excerpt_mblength($length) {
    return 100;
    }
    add_filter('excerpt_mblength', 'new_excerpt_mblength');
    [/code]
    をfunctions.phpに追加しない状態でも、
    20字という少なすぎる字数で切れてしまうようになりました
    また、上記コードをfunctions.phpに追加しても相変わらず20字で、
    return 100 の数字を変えても同様です。
    どうすればいいのでしょうか?
    よろしくお願いします。

    こんにちは

    function new_excerpt_mblength($length) {
    return 100;
    }
    add_filter('excerpt_mblength', 'new_excerpt_mblength');

    フィルタが間違っています。( まちがっているというのは、おかしいかもしれないですけど )

    function new_excerpt_mblength($length) {
    return 100;
    }
    add_filter('excerpt_length', 'new_excerpt_mblength');

    に変更してください。

    英語の場合、このフィルタで 100とした場合 文字数ではなく 単語数になります。

    日本語の場合、単語がスペースで区切られることはないので、マルチバイトパッチプラグインが、文字数で切り出すようになっていたと思います。

    単語数ではなく、文字数で取り出したいという事でしたら、

    wp_html_excerpt()

    を使うと、英語、日本語共文字数で取り出せたと思います。

    トピック投稿者 31.com

    (@31com)

    nobita様
    ありがとうございます。
    wp_html_excerpt で解決させました。
    ありがとうございました!

    モデレーター Seisuke Kuraishi

    (@tenpura)

    日本語環境用の機能を残したまま日本語翻訳だけを行わせたくない場合は、WordPress のローカル言語を変更する際に知っておくべきことに説明してあるように設定してください。そうでないとその他にも問題が起こる可能性があります。

    トピック投稿者 31.com

    (@31com)

    Seisuke Kuraishi (tenpura)様

    全く知りませんでした。ありがとうございます!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「(再)英語設定だとthe_excerptの文字数を変更できない」には新たに返信することはできません。