Редактирование вкладок товара

Это документация для разработчиков. Если вы не знакомы с кодом, лучше обратиться к специалисту.

Добавьте код в файл functions.php вашей дочерней темы или используйте плагин для добавления пользовательских функций, например Code Snippets. Не добавляйте код в файл functions.php родительской темы — он будет удалён при обновлении.

Ниже показаны вкладки товара, которые отображаются на странице товара в теме Storefront:

Вкладки товара в теме Storefront

Удаление вкладок

Используйте следующий код, чтобы удалить нужные вкладки:

/**
 * Удаление вкладок товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );

function woo_remove_product_tabs( $tabs ) {

    unset( $tabs['description'] ); // Удалить вкладку "Описание"
    unset( $tabs['reviews'] ); // Удалить вкладку "Отзывы"
    unset( $tabs['additional_information'] ); // Удалить вкладку "Дополнительная информация"

    return $tabs;
}

Переименование вкладок

Используйте следующий код, чтобы изменить названия вкладок:

/**
 * Переименование вкладок товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );

function woo_rename_tabs( $tabs ) {

    $tabs['description']['title'] = __( 'Подробнее' );// Переименовать вкладку "Описание"
    $tabs['reviews']['title'] = __( 'Отзывы' );//Переименовать вкладку "Отзывы"
    $tabs['additional_information']['title'] = __( 'Характеристики' );//Переименовать вкладку "Дополнительная информация"

    return $tabs;
}

Изменение порядка вкладок

Используйте следующий код, чтобы изменить порядок вкладок:

/**
 * Изменение порядка вкладок товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_reorder_tabs', 98 );

function woo_reorder_tabs( $tabs ) {

    $tabs['reviews']['priority'] = 5; // "Отзывы" первыми
    $tabs['description']['priority'] = 10; // "Описание" вторыми
    $tabs['additional_information']['priority'] = 15; // "Дополнительная информация" третьими

    return $tabs;
}

Настройка вкладки

Следующий код заменяет вкладку «Описание» на пользовательскую функцию:

/**
 * Кастомизация вкладки товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_custom_tab', 98 );

function woo_custom_tab( $tabs ) {

    $tabs['description']['callback'] = 'my_custom_tab_content';

    return $tabs;
}

function my_custom_tab_content() {
    echo '<h2>Мой контент&lt</h2>';
    echo '<h2>Здесь может быть любой HTML или PHP код&lt</h2>';
}

Добавление пользовательской вкладки товара

Используйте следующий сниппет, чтобы добавить глобальную пользовательскую вкладку товара.


/**
 * Добавление пользовательской вкладки товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );

function woo_new_product_tab( $tabs ) {

    // Добавляет новую вкладку

    $tabs['test_tab'] = array(
        'title'    => __( 'Новая вкладка товара', 'woocommerce' ),
        'priority' => 50,
        'callback' => 'woo_new_product_tab_content'
    );

    return $tabs;
}

function woo_new_product_tab_content() {

    // Содержимое новой вкладки

    echo '<h2>Новая вкладка товара</h2>';
    echo '<h2>Это ваша новая вкладка товара.</h2>';
}

Вкладка «Дополнительная информация»

Обратите внимание: вкладка «Дополнительная информация» отображается только если у товара заданы вес, размеры или атрибуты (с включённой опцией «Видно на странице товара»). Если вы попытаетесь изменить эту вкладку, но у товара нет этих данных, может появиться ошибка:

Warning: call_user_func() expects parameter 1 to be a valid callback, no array or string given in /mysite/wp-content/plugins/woocommerce/templates/single-product/tabs/tabs.php on line 35

В этом случае используйте условные функции WooCommerce:

  • has_attributes()
  • has_dimensions()
  • has_weight()

/**
 * Проверка, есть ли у товара атрибуты, размеры или вес.
 * Используется, чтобы избежать ошибки call_user_func() при изменении вкладки «Дополнительная информация».
 */
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );

function woo_rename_tabs( $tabs ) {

    global $product;

    if ( $product->has_attributes() || $product->has_dimensions() || $product->has_weight() ) {
        // Переименование вкладки «Дополнительная информация»
        $tabs['additional_information']['title'] = __( 'Данные товара', 'woocommerce' );
    }

    return $tabs;
}

Добавление пользовательской вкладки

Используйте следующий сниппет, чтобы добавить новую пользовательскую вкладку товара.


/**
 * Добавление пользовательской вкладки товара
 */
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );

function woo_new_product_tab( $tabs ) {

    // Добавляет новую вкладку

    $tabs['test_tab'] = array(
        'title'    => __( 'Новая вкладка товара', 'woocommerce' ),
        'priority' => 50,
        'callback' => 'woo_new_product_tab_content'
    );

    return $tabs;
}

function woo_new_product_tab_content() {

    // Содержимое новой вкладки

    echo '<h2>Новая вкладка товара</h2>';
    echo '<h2>Это ваша новая вкладка товара.</h2>';
}

Поделиться с друзьями
Документация WooCommerce