如果新产品为特定类型,如何设置标签

时间:2019-03-15 12:41:55

标签: php wordpress woocommerce

在“产品的Woocommerce管理员”标签中, 我希望产品标签在用户添加新产品时反映出自定义布局。

现在,我具有退出产品时的工作代码,但是我希望当用户单击以添加新产品时也能反映出来(您知道产品插入数据库之前的屏幕吗?)

这是我正在测试的工作代码

function Reboot_remove_linked_products($tabs){
    global $post;
    $Product_is_what_Im_looking_for=false;
    if ( is_product() && has_term( 'Forensic Evidence', 'product_cat' ) ) {
        $Product_is_what_Im_looking_for= true;
    }elseif( is_product() && has_category( 'Forensic Evidence' ) ) {
        $Product_is_what_Im_looking_for= true;
    }

    if ($Product_is_what_Im_looking_for== true){
        unset($tabs['general']);
            unset($tabs['inventory']);
            unset($tabs['shipping']);
            unset($tabs['linked_product']);
            unset($tabs['attribute']);
            unset($tabs['advanced']);

    }
    return($tabs);
}

add_filter('woocommerce_product_data_tabs', 'Reboot_remove_linked_products', 10, 1);

2 个答案:

答案 0 :(得分:0)

也许您应该像这样更改该钩子的优先级:-

add_filter('woocommerce_product_data_tabs', 'Reboot_remove_linked_products', 999, 1);

对于新屏幕,您必须检查产品是否已发布。

更新的代码:-

function Reboot_remove_linked_products($tabs){
    global $post;
    $Product_is_what_Im_looking_for=false;
    if ( is_product() && has_term( 'Forensic Evidence', 'product_cat' ) ) {
        $Product_is_what_Im_looking_for= true;
    }elseif( is_product() && has_category( 'Forensic Evidence' ) ) {
        $Product_is_what_Im_looking_for= true;
    } elseif('publish' === get_post_status( $post->ID )) {
        $Product_is_what_Im_looking_for= true;
    }

    if ($Product_is_what_Im_looking_for== true){
        unset($tabs['general']);
            unset($tabs['inventory']);
            unset($tabs['shipping']);
            unset($tabs['linked_product']);
            unset($tabs['attribute']);
            unset($tabs['advanced']);

    }
    return($tabs);
}

add_filter('woocommerce_product_data_tabs', 'Reboot_remove_linked_products', 999, 1);

答案 1 :(得分:0)

所以花了很长时间才弄清楚这个问题,但是答案出奇的简单,实际上是在Woocommerce文档中。.

function Reboot_remove_linked_products($tabs){
    $tabs['inventory']['class'][] = 'hide_if_forensic_evidence';
    $tabs['shipping']['class'][] = 'hide_if_forensic_evidence';
    $tabs['linked_product']['class'][] = 'hide_if_forensic_evidence';
    $tabs['attribute']['class'][] = 'hide_if_forensic_evidence';
    $tabs['advanced']['class'][] = 'hide_if_forensic_evidence';
    return($tabs);
}
add_filter('woocommerce_product_data_tabs', 'Reboot_remove_linked_products', 10, 1);

那么你在问什么呢? 因此,根据Woo切换产品类型时,绝不会设置标准格式的选项卡。 它们具有内置的功能,可以根据所选的产品类型隐藏标签。

因此全部,您需要做的是添加具有自定义产品类型的“ hide_if”类。 因此,在我的情况下,它是“ hide_if_forensic_evidence”。 您可以对要“禁用”的所有标签执行此操作

选择产品类型时,Woo会自动知道隐藏这些标签。