- Elegant Tabs for Woo-commerce по своей сути не поддерживает создание пользовательских вкладок для отдельных продуктов.
- Он не предоставляет специальный интерфейс на экране Woo-commerce «Редактирование продукта» -> контейнер данных о продукте -> поле «Элегантная настраиваемая вкладка» для управления вкладками для каждого продукта.
Элегантные вкладки могут не иметь возможности сохранять вкладки для повторного использования в нескольких продуктах. - Elegant Tabs не поддерживает переопределение глобальных вкладок для повторного использования их в качестве шаблона для других продуктов.
Что я пробовал до сих пор:
Добавление локальных вкладок:
Код: Выделить всё
// Add fields for local tabs on product edit page
add_action('woocommerce_product_options_general_product_data', 'add_product_local_tabs');
function add_product_local_tabs() {
global $post;
$local_tabs = get_post_meta($post->ID, '_local_elegant_tabs', true) ?: array();
echo '';
echo '' . __('Custom Product Tabs', 'woocommerce') . '';
echo '';
foreach ($local_tabs as $tab_id => $tab) {
echo '';
echo '';
echo '' . esc_textarea($tab['content']) . '';
echo '' . __('Remove Tab', 'woocommerce') . '';
echo '';
}
echo ''; // custom_product_tabs_container
echo '' . __('Add New Tab', 'woocommerce') . '';
echo ''; // End options_group
}
Код: Выделить всё
// Save custom product tabs data
add_action('woocommerce_process_product_meta', 'save_custom_product_tabs');
function save_custom_product_tabs($post_id) {
if (isset($_POST['custom_tab_title']) && isset($_POST['custom_tab_content'])) {
$local_tabs = array();
foreach ($_POST['custom_tab_title'] as $tab_id => $title) {
if (!empty($title)) {
$local_tabs[$tab_id] = array(
'title' => sanitize_text_field($title),
'content' => wp_kses_post($_POST['custom_tab_content'][$tab_id]),
);
}
}
update_post_meta($post_id, '_local_elegant_tabs', $local_tabs);
} else {
delete_post_meta($post_id, '_local_elegant_tabs');
}
}
Код: Выделить всё
jQuery(document).ready(function($) {
let tabCount = $('.custom-tab').length;
$('#add_new_custom_tab').on('click', function() {
tabCount++;
const newTab = `
Remove Tab
`;
$('#custom_product_tabs_container').append(newTab);
});
$(document).on('click', '.remove_tab', function() {
$(this).closest('.custom-tab').remove();
});
});
Код: Выделить всё
add_filter('woocommerce_product_tabs', 'combine_global_and_local_tabs', 100, 2);
function combine_global_and_local_tabs($tabs, $product) {
$local_tabs = get_post_meta($product->get_id(), '_local_elegant_tabs', true);
if (!empty($local_tabs)) {
foreach ($local_tabs as $tab) {
$tabs[] = array(
'title' => esc_html($tab['title']),
'callback' => function() use ($tab) {
echo wp_kses_post($tab['content']);
},
);
}
}
return $tabs;
}


Я ожидаю решения

Подробнее здесь: https://stackoverflow.com/questions/788 ... scribed-in