add_filter重新排序单个产品选项卡导致错误

时间:2016-03-29 02:21:14

标签: php wordpress tabs

当我尝试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;
}

我无法弄清楚出了什么问题。请帮助识别问题并修复。

3 个答案:

答案 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>';
}