the_excerptが英語環境機能しない
-
「英語にすると機能しません」だけでなく、どうなるのかを具体的に示したほうがコメントがつきやすいと思います。例えば全文が表示されるのか、何も表示されないのか、xx文字の抜粋のはずがそれより長く(または短く)なるのか、などです。
gblsmさん
コメントありがとうございます。
「英語にすると全文が表示されてしまいます」
とりあえずAdvaced Ecerptというプラグインを使ってしのいでいますが、理由がわからず困っています。「設定が「日本語」の場合きちんと機能するのですが、「英語」にすると機能しません。」とは、ダッシュボードのサイトの言語でのことですか、プラグインかPHPコードで行っていることですか。
Du bist der Lenz さん
コメントありがとうございます。
ダッシュボードの設定で切り替える「サイトの言語」のことです。こんにちは、
the_excerpt() は、英語環境で使った場合、単語の数で要約文を作成します。(英語の場合スペースで単語が区切られますよね)、日本語は、そのようにスペースで区切って書かないので、全文が表示されるという事になっているのだと思います。
英語でも、文字数で省略したい場合は、
wp_html_excerpt()
等の関数が使用できるので検討してみてください。nobita さん
コメントありがとうございます。
サイトの言語が日本語の場合、
記事が英語であっても、日本語であっても要約文で表示されます。
サイトの言語が英語の場合、
記事が英語であっても、日本語であっても全文が表示されます。日本語を表示する場合、WP Multibyte patchというプラグインを入れないと
要約文で表示されないとネットに記載されていたので、インストールしています。
ただ、今のサイトはすべて英語表示なので、このプラグインは不要と思っています。@shige3 さんが検証している記事の単語数(文字数ではありません)はいくつ程度でしょうか。
WP Multibyte Patch の有効/停止を切り替えながら検証したところ次のような結果でした。
サイトの言語が英語の場合:
記事が英文の場合:
約110単語まで表示(それ以下なら全文)。
WP Multibyte Patch を停止すると、約55単語まで。
記事が日本語の場合:
改行が約110回出てくるまで表示(それ以下なら全文)。
WP Multibyte Patch を停止すると、改行が約55回出てくるまで。55 は WordPress の the_excerpt() 関数の仕様です。
110 は WP Multibyte Patch の機能によるものだと思われます。どのようなテーマをお使いですか?
WordPressには、フィルターという機能があり、本来 the_excerpt()は、要約文を表示しますが、この機能で全文を表示するようにすることもできます。
私自身もテーマを作っていますが、通常のthe_excerpt()を使うとhtml要素がすべて取り払われるので、テーブル要素などでコンテンツを記述した場合、意味不明な要約文になったりするため、独自にhtml要素含みの要約文を表示する機能を持たせたりしています。そのようなテーマ由来の特殊な機能に関連している可能性があるのではないかと思います。
テーマに関する情報がないと、何とも言えないところです。
gblsm さん
チェックありがとうございます。
ネットで調べるととthe_excerpt()は110文字(単語ではなく)がデフォルトと表記されていました。
実際に日本語環境で動かすと
英語の場合:55文字
日本語の場合:80文字(半角換算で)
となりました。
英語環境にすると
英語、日本語共にすべて表示されます。
ノイズを入れないためWP Multibyte Patchは停止しています。日本語環境ではきちんと表示されるのに英語環境ではなぜ動作しないのか?
というのが悩みです。nobitaさん
アドバイスありがとうございます。
Wordpress初心者なのですがコンテンツはすべて自作です。
テーマは利用していません。
自作の部分が原因だとするととりあえず導入したプラグイン「Advanced excerpt」で
対応するしかないですね。@shige3 さん
「日本語環境で、英語の場合: 55文字」は検証で同じ結果でした。
「英語環境にすると、英語、日本語共にすべて表示されます。」は、どんな本文を入力されたか、具体的に示していただけないでしょうか。
このお願いの背景をご説明します。
英語環境の場合、抜粋は文字数ではなく、単語数をカウントして行われます(@nobita さんが最初のコメントで仰っているように)。
日本語環境の場合、抜粋は文字数をカウントするように変わります。「単語」について。例えば The quick brown fox jumps over the lazy dog という英文は、文字数だと43(スペース含む)ですが、単語数は9です(スペースや改行で区切られた文字列を単語とします)。記事本文が日本語であっても同じルールで単語を判定することにご注意ください。
さて the_excerpt() のデフォルトは次のようになります。
英語環境の場合、WP Multibyte Patch を停止すると55(単語)、有効にすると110(単語)。
日本語環境では WP Multibyte Patch が停止中は55(文字)、有効にすると110(文字)になります。このため、例えば英語環境で WP Multibyte Patch が停止していて、記事本文が英文で200文字ある場合、それが単語で55以下なら、全文が表示されます。
—回答がアップされないので分割して再アップします—
@gblsmさん
私の理解不足でした。
以下のご指摘の状況のようです。>英語環境の場合、抜粋は文字数ではなく、単語数をカウントして行われます
>@nobita さんが最初のコメントで仰っているように)。
>日本語環境の場合、抜粋は文字数をカウントするように変わります。>このため、例えば英語環境で WP Multibyte Patch が停止していて、
>記事本文が英文で200文字ある場合、それが単語で55以下なら、全文が表示されます。WP Multibyte Patch が停止している状態で表示は以下となります。
日本語環境の場合記事A
word word word word word word word word word word! word […]
記事B
言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉! 言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉、 […]続きです。
英語環境の場合
記事A
word word word word word word word word word word! word word word word word word word word word word! word word word word word word word word word word! word word word word word word word word word word! word word word word word word word word word word! word word word word word word word word word word! word […] ← 全文が表示されていません!続きです。
オリジナル記事は以下です。
記事A
word word word word word word word word word word!
x14行記事B
言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉、言葉!
x11行functions.phpに以下を記入したら
function my_excerpt_length($length) {
return 20;
}
add_filter(‘excerpt_length’, ‘my_excerpt_length’);記事Aは
word word word word word word word word word word! word word word word word word word word word word! word word […]と表示されるようになりました。
これで解決です。
@gblsmさん、@nobitaさん、他皆さん
どうもありがとうございました。
- トピック「the_excerptが英語環境機能しない」には新たに返信することはできません。