Anonymous
Расширение плагина «Elegant Tabs for WooCommerce» дополнительными функциями, описанными в сообщении.
Сообщение
Anonymous » 05 авг 2024, 00:08
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
1722805725
Anonymous
[list] [*]Elegant Tabs for Woo-commerce по своей сути не поддерживает создание пользовательских вкладок для отдельных продуктов. [*]Он не предоставляет специальный интерфейс на экране Woo-commerce «Редактирование продукта» -> контейнер данных о продукте -> поле «Элегантная настраиваемая вкладка» для управления вкладками для каждого продукта. Элегантные вкладки могут не иметь возможности сохранять вкладки для повторного использования в нескольких продуктах. [*]Elegant Tabs не поддерживает переопределение глобальных вкладок для повторного использования их в качестве шаблона для других продуктов. Что я пробовал до сих пор: [b]Добавление локальных вкладок:[/b] [/list] [code]// 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 } [/code] [b]Сохранять локальные вкладки при обновлении продукта[/b] [code]// 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'); } } [/code] [b]Сценарии для динамического управления вкладками[/b] [code]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(); }); }); [/code] [b]Расширение отображения вкладок[/b] [code]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; } [/code] Проблемы: [img]https://i.sstatic.net/IPxGYSWk .png[/img] [img]https://i.sstatic.net/MBsvZFJp.png[/img] Я ожидаю решения [img]https://i.sstatic.net/zxBWG15n.png[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/78832133/extending-elegant-tabs-for-woocommerce-plugin-with-more-features-described-in[/url]