woocommerce用に作成したカスタムコードは、woocommerce 3に更新した後に正しく動作しません。この特定のケースでは、woocommerce_available_variationフィルタです。私はそれを使用して、製品属性に基づいて製品バリエーションの説明を動的に挿入しました。今、私はこのエラーメッセージを取得していますのようwoocommerce_available_variationフィルタは、Woocommerce 3アップデート後には動作しません
:
キャッチできる致命的なエラー:クラスWC_Product_Downloadのオブジェクトは/ホーム/ silent48/public_htmlの/ WP/WP-コンテンツ/プラグイン/ woocommerceに文字列に変換することができませんでした/includes/wc-product-functions.php on line 376
3.0に準拠させるには、以下のコードをどうすればいいですか?
add_filter('woocommerce_available_variation', 'change_variation_descriptions');
function change_variation_descriptions($descriptions) {
global $post, $woocommerce;
$basicmp3des = '<div class="licensedetails">
<li>-Delivered in mp3 format instantly after purchase</li>
<li>-Synchronization rights are granted</li>
<li>-One commercial use is permitted (ie: mixtape, album, etc)</li>
<li>-You may distribute up to 5000 profitable units</li>
<li>-Includes non-exclusive contract agreement (e-signed at checkout)</li>
<li>-Send me a quote to inquire about Exclusive License purchase!</li>
</div>';
foreach ($descriptions as $description) {
$variation = wc_get_formatted_variation($description, true);
if (strpos($variation, 'Basic License') !== false && strpos($variation, 'mp3') !== false) {
$descriptions['variation_description'] = $basicmp3des;
}
}
return $descriptions;
}
私は、 'woocommerce_available_variation'は常に配列であり、バリエーションオブジェクトの配列ではないので、' foreach() 'を実行してバリエーションを期待しているとエラーが発生する可能性が高いです。 「基本ライセンス」と「mp3」は何を指していますか?それらの製品の属性ですか?私は説明を直接フィルタリングする方が簡単かもしれませんが、条件付きで目的のバリエーションにテキストを追加する方法を知る必要があります。 – helgatheviking
こんにちは。それは事です、それはwoocommerce 2.xでうまくいきました。そして、ええ、音楽ファイルをファイル形式とライセンスタイプで販売しています。オリジナルのコードはかなり長くなりましたが、1つの説明と1つのバリエーションを表示するように短縮しました。私は5つのライセンス・タイプと2つのファイル・フォーマットを属性として持っています。私はこれを行うためのより適切な方法があると確信していましたが、私が働いている最初の方法だったので、私はそれを変更する気にはなりませんでした。 – isk