Как настроить вкладки, если новый продукт относится к определенному типу - PullRequest
1 голос
/ 15 марта 2019

На вкладке администратора 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 голосов
/ 15 марта 2019

Так что потребовалось слишком много времени, чтобы понять это, но ответ на удивление прост и был на самом деле в документации 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. Они имеют встроенные функции для скрытия вкладки в зависимости от выбранного типа продукта.

поэтому ALL вам нужно добавить класс с именем hide_if с вашим пользовательским типом продукта. Так что в моем случае это "hide_if_forensic_evidence". Вы делаете это для всех вкладок, которые вы хотите "отключить"

Ву автоматически узнает, что скрыть эти вкладки, когда выбран тип вашего продукта.

0 голосов
/ 15 марта 2019

Может быть, вам следует изменить приоритет этого хука следующим образом: -

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...