我为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' );
答案 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();
}