web-dev-qa-db-ja.com

php 7.2で "Warning:count()"エラーが発生しました

私は現在php 7.2で作業しています、そして、例えば、functions.phpの中で、単一のテンプレートの外側でget_the_content()またはget_the_excerpt()を使用するとき、私は以下の警告を得ます:

警告:count():パラメータは284行目の/Applications/MAMP/htdocs/wordpress/wp-kona/wp-includes/post-template.phpでCountableを実装した配列またはオブジェクトでなければなりません

どうしたんだ?それはwordpressの中心的なバグですか?私は何かが足りないのですか。

4
Benmay

V5.2の時点で、これはもはや問題になりません。 get_the_content()wp_trim_excerpt()は、$postのオプションの新しいパラメータ(それぞれ3番目と2番目)を取得しているので、ループの外側で使用でき、他のすべてのget_the_*関数の機能と一致します。 16年しかかかりませんでした... Tracについての言及

1
mrben522

誰かがこの問題にぶつかった場合、解決策はメタフィールドからthe_contentを取得し、次のようにthe_contentフィルタを通してそれを実行することです:

apply_filters('the_content', get_post_field('post_content', $post->id));

TLDRセクションまで待てば、全体を説明する短いビデオを作成しました... https://www.youtube.com/watch?v=vMguTNzFoUk

0

このバグはWordPressのコアのバグに関連しています https://core.trac.wordpress.org/ticket/42814

ほとんどの場合、抜粋またはコンテンツが空の場合は、ループの外側でget_the_excerptまたはget_the_content関数を呼び出すと発生します。

それであなた自身でそれを直すためにあなたはエラーの場所を見つけて手動で抜粋/内容が存在するかチェックするべきです。

例えば:

if(has_excerpt($post_id)) {
    $meta[] = sprintf('<meta name="description" content="%s">',
        get_the_excerpt($post_id)
    );
}
0
Anton Lukin

はい、私はすでにあなたが経験していることの原因を知っていました:

$ pageおよび$ pagesグローバル変数が設定されていないため、get_the_contentまたはget_the_excerptを呼び出すと、そのエラーが返されます。count(pages)

ただし、pagesグローバル変数はnullに設定されており、count(pages)を呼び出すとnull値をカウントできないため、このエラーが発生します。

この1つの呼び出しを修正するには、ループ外でget_the_contentまたはget_the_excerptを呼び出していることを簡単に伝えます。

そのため、使用前に投稿データを正しく設定する必要があります。つまり、ループの目的は次のとおりです。

 while(have_post():the_post()):
 // get_the_content()またはget_the_excerpt()は、現在はうまく動作します。 
0
John Zenith