当我尝试add_fliter重新排序我的标签时,我看到以下错误消息。 以下是我在孩子主题中所做的事情。的functions.php
PHP警告:call_user_func()期望参数1是有效的回调,第47行的wp-content \ themes \ salient \ woocommerce \ single-product \ tabs \ tabs.php中没有给出数组或字符串
tabs.php中的第47行指向此 -
<?php foreach ( $tabs as $key => $tab ) : ?>
<div class="panel entry-content" id="tab-<?php echo esc_attr( $key ); ?>">
<?php call_user_func( $tab['callback'], $key, $tab ); ?>
</div>
<?php endforeach; ?>
添加过滤器我尝试使用的是这个 -
add_filter( 'woocommerce_product_tabs', 'woo_reorder_tabs', 98 );
function woo_reorder_tabs( $tabs ) {
$tabs['reviews']['priority'] = 5; // Reviews first
$tabs['description']['priority'] = 10; // Description second
$tabs['additional_information']['priority'] = 15; // Additional information third
return $tabs;
}
我无法弄清楚出了什么问题。请帮助识别问题并修复。
答案 0 :(得分:0)
我删除了struc中的$tabs['additional_information']
条目,我在此函数中引用了它。打印出$tabs
内容提供了必要的调试步骤来修复警告消息。
重新排序函数没有需要更改,只是在数组中不存在条目的错误引用。
答案 1 :(得分:0)
是的,这可以在您删除永远不会使用的标签时起作用。但它不是评论标签的解决方案。当有一些时显示评论,当没有时显示隐藏。 当您开始使用重新排序选项卡(仅声明该选项卡)时,问题就开始了。然后,当产品页面没有任何评论时,woocommerce开始期待它并且抛出错误。
答案 2 :(得分:0)
您必须创建不同的功能,以便使用其过滤器重命名,删除,重新排序或添加标签:
喜欢:
add_filter('woocommerce_product_tabs', 'woo_remove_product_tabs', 98);
function woo_remove_product_tabs($tabs) {
unset($tabs['reviews']); // Remove the reviews tab
$tabs['description']['title'] = __('Additional Information'); // Rename the description tab
return $tabs;
}
add_filter('woocommerce_product_tabs', 'woo_rename_tabs', 98);
function woo_rename_tabs($tabs) {
$tabs['description']['title'] = __('Additional Information'); // Rename the description tab
return $tabs;
}
add_filter('woocommerce_product_tabs', 'woo_new_product_tab');
function woo_new_product_tab($tabs) {
$tabs['shipping_returns'] = array(
'title' => __('Shipping And Returns', 'woocommerce'),
'priority' => 50,
'callback' => 'woo_new_product_tab_content'
);
return $tabs;
}
function woo_new_product_tab_content() {
echo get_the_title();
echo '<p>Here\'s your new product tab.</p>';
}