私は現在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の中心的なバグですか?私は何かが足りないのですか。
V5.2の時点で、これはもはや問題になりません。 get_the_content()
とwp_trim_excerpt()
は、$post
のオプションの新しいパラメータ(それぞれ3番目と2番目)を取得しているので、ループの外側で使用でき、他のすべてのget_the_*
関数の機能と一致します。 16年しかかかりませんでした... Tracについての言及
誰かがこの問題にぶつかった場合、解決策はメタフィールドからthe_contentを取得し、次のようにthe_contentフィルタを通してそれを実行することです:
apply_filters('the_content', get_post_field('post_content', $post->id));
TLDRセクションまで待てば、全体を説明する短いビデオを作成しました... https://www.youtube.com/watch?v=vMguTNzFoUk
このバグは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)
);
}
はい、私はすでにあなたが経験していることの原因を知っていました:
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()は、現在はうまく動作します。