4

カスタムビルドのテンプレートでバリエーションを表示するのに問題があります。ループ内でwpsc関数を呼び出すたびwpsc_have_variation_groups()に、次のphpエラーが発生します。

1419行目のcommerce/wpsc-includes / product-template.php [22-Nov-2012 23:27:39] PHP致命的なエラー:have_variation_groups()/ home / tofapost / public_html /sandbox/内の非オブジェクトのメンバー関数の呼び出し1419行目のwp/wp-content / plugins / wp-e-commerce / wpsc-includes/product-template.php。

wpsc_have_variation_groups()このようにWP_Queryループ内で呼び出されています。

$args = array('post_type' => 'wpsc-product', 'posts_per_page' => -1);
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();

   ... 

<?php if (wpsc_have_variation_groups()) { ?>

<?php } ?> 

    ...

endwhile;

奇妙なことに、wpsc_the_product_id()やwpsc_product_has_stock()などの他のwpsc関数は機能しますが、バリエーションに関連する関数は機能しません...

助けていただければ幸いです

ありがとう

4

2 に答える 2

2

wpsc_the_product() 関数は、製品バリエーション関数が使用するグローバル $wpsc_variations オブジェクトを設定します。

wpsc_the_product() を使用するには、クエリをグローバルな $wp_query にする必要があると思いますが、ループを開いた後に自分で $wpsc_variations を設定できます。

while ($loop->have_posts()) : $loop->the_post();
    global $wpsc_variations;
    $wpsc_variations = new wpsc_variations( get_the_ID() );

うまくいけば、すべての製品バリエーション機能が機能するはずです。

次の場所を参照できます。

https://wordpress.stackexchange.com/questions/73689/issue-displaying-variations-in-custom-template-using-wpec-3-8-9-2

これはあなたの問題を解決するのに役立つかもしれないと思います。

于 2013-03-25T06:02:46.547 に答える
2

これはすでに回答済みです。この質問の問題は、すべてのコードが表示されるわけではなく、間違ったタイプのループが使用されているという事実です。製品を一覧表示します。

使用された答えは、取得する必要があるバリエーションの識別子がなかったため、ループのタイプでは ID を使用できないため、バリエーションを手動で取得することでした。現在のコードを使用できるようにするには、別のループを使用するか、バリエーションが手動で取得されるように変更する必要がありました。この場合、バリエーションは手動で取得されました。

global $wpsc_variations;
$wpsc_variations = new wpsc_variations( get_the_ID() );

参照: https://wordpress.stackexchange.com/questions/73689/issue-displaying-variations-in-custom-template-using-wpec-3-8-9-2

于 2013-03-25T05:18:21.343 に答える