为什么我收到此致命错误消息

时间:2019-02-21 21:34:01

标签: php woocommerce runtime-error

我为woocommerce编写了自己的简码。

该代码在content-single-product.php上运行良好。 但是,其他任何页面都无法浏览。为什么?

Fatal error: Call to a member function get_gallery_image_ids() on null in /mysite/wp-content/plugins/woocommerce/templates/single-product/product-thumbnails.php on line 27

这是我写的功能:

/* My custom shortcode code*/
function get_woocommerce_gallery_image_thumbnails ( $atts ) {

     // Buffer our contents
     ob_start();

     /* Line to get the gallery thumbnails */
wc_get_template( 'single-product/product-thumbnails.php');

     // Return buffered contents
     return ob_get_clean();
}

add_shortcode( 'wc_get_thumbs', 'get_woocommerce_gallery_image_thumbnails' );

1 个答案:

答案 0 :(得分:0)

根据给定的信息,每个页面要求输入*something*->get_gallery_image_ids(),但是*something*仅存在于您的产品页面上。查看可用数据,此*something*可能是在product-thumbnails模板中创建的。

利用this answer的信息,我们可以看到*something*实际上是global $product,这是product-thumbnails所必需的。

我认为最好的解决方案是从不是产品页面的每个页面中删除product-thumbnails

作为替代方案,您可以在简码定义中添加保护措施:

function get_woocommerce_gallery_image_thumbnails ( $atts ) {
     global $product;
     if (!isset($product)) {
         return;
     }

     // Buffer our contents
     ob_start();

     /* Line to get the gallery thumbnails */
     wc_get_template( 'single-product/product-thumbnails.php');

     // Return buffered contents
     return ob_get_clean();
}