4

我在自定义构建的模板中显示变体时遇到问题,每次我wpsc_have_variation_groups()在循环中调用 wpsc 函数时都会收到以下 php 错误

commerce/wpsc-includes/product-template.php 在第 1419 行 [22-Nov-2012 23:27:39] PHP 致命错误:调用have_variation_groups()/home/tofapost/public_html/sandbox/ 中非对象的成员函数wp/wp-content/plugins/wp-e-commerce/wpsc-includes/product-template.php 在第 1419 行。

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 函数,如 wpsc_the_product_id() 和 wpsc_product_has_stock() 工作,而没有与变化相关的函数......

任何帮助表示赞赏

谢谢

4

2 回答 2

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 回答
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 回答