2016-12-06 73 views
1

我在添加“相关产品”到选项卡并使其适用于使用短代码的帖子时遇到问题。这里是一个的被放置在我的functions.php将“相关产品”添加到WooCommerce的自定义选项卡中

[product_page ID =“99”]

在这里,短代码和完整的代码是我在用我的主题代码的functions.php

remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); 
/* 
* Register custom tab 
*/ 
function woo_custom_product_tab($tabs) { 

    $custom_tab = array( 
     'custom_tab' => array( 
          'title' => __('Custom Tab','woocommerce'), 
          'priority' => 9, 
          'callback' => 'woo_custom_product_tab_content' 
         ) 
       ); 
return array_merge($custom_tab, $tabs); 
} 
/* 
* Place content in custom tab (related products in this sample) 
*/ 
function woo_custom_product_tab_content() { 
woocommerce_related_products(); 
} 
add_filter('woocommerce_product_tabs', 'woo_custom_product_tab'); 

下面是我收到的错误:

Fatal error: Call to a member function get_upsells() on a non-object in public_html/wp-content/plugins/woocommerce/templates/single-product/up-sells.php on line 25

回答

2

我认为你需要使用全局$产品对象与WC_Product get_related() method避免这种错误...

然后将溶液可能是:

remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); 
/* 
* Register custom tab 
*/ 
function woo_custom_product_tab($tabs) { 

    $custom_tab = array( 
     'custom_tab' => array( 
      'title' => __('Custom Tab','woocommerce'), 
      'priority' => 9, 
      'callback' => 'woo_custom_product_tab_content' 
     ) 
    ); 
    return array_merge($custom_tab, $tabs); 
} 

/* 
* Place content in custom tab (related products in this sample) 
*/ 
function woo_custom_product_tab_content() { 
    global $product; 
    $product->get_related(); 
} 
add_filter('woocommerce_product_tabs', 'woo_custom_product_tab'); 

由于这是未经测试,我不保证什么...

代码放在你的活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中使用。

+0

这工作!然而,这只是与短代码一起工作,但不适用于woocommerce页面......任何解决方案? – SlyMurphy

相关问题