多くの場合に発生する PHP エラー WordPress Plugins 長い間更新されていないか、新しいバージョンの PHP と互換性がありません。 PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.
このシナリオでは、モジュールで PHP エラーが発生しました Cross Sell Product Display 以下のために WooCommerce.
FastCGI sent in stderr: "PHP message: PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable in /web/path/public_html/wp-content/plugins/cross-sell-product-display-for-woocommerce/templates.php on line 18
キュプリン
エラーが発生する理由 PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?
このPHPエラーを生成する問題は関数です sizeof()
PHP 7.2 以降のバージョンでは、指定されたパラメーターが XNUMX つでない場合、このエラーが生成される可能性があります。 array またはインターフェースを実装するオブジェクト Countable.
そのため、PHP のバージョンを更新した後にエラーが表示されることがよくあります。
によって生成された PHP エラーを解決する方法 sizeof()
?
最も簡単な方法は、関数呼び出しを置き換えることです sizeof()
関数呼び出しで count()
.
古いバージョンのモジュールをお使いの方の場合 Cross Sell Product Display、解決策は簡単です。 18 インチ ラインの機能は置き換えられます templates.php.
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( sizeof($crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
それが含まれている上記のコード sizeof() 次のものに置き換えられます。
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( !is_array( $crosssells ) || count( $crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
この変更は、最初に次のことを確認します。 $crosssells
あります array 関数を使用して is_array()
それ以外の場合は戻ります false.
の場合には $crosssells
あります array、関数が使用されます count()
の要素数を決定する array. 要素数が XNUMX または $crosssells
が空の文字列の場合、false が返されます。
このチュートリアルに説明や追加がある場合は、コメントを残してください。