У товаров WC есть вкладка Дополнительная информация (Additional Information), в которой по-умолчанию выводятся атрибуты, вес и габариты товара. Добавим в эту вкладку дополнительные данные.
Проверки содержит ли товар атрибуты, вес или габариты
- has_attributes()
- has_dimensions()
- has_weight()
Пример использования
global $product; if( $product->has_attributes() || $product->has_dimensions() || $product->has_weight() ) { какое-либо действие }
Добавление информации во вкладку
Шаблон вкладки Additional Information находиться в папке woocommerce/single-product/tabs. Можно либо что-то добавить в него напрямую, или можно воспользоваться хуком:
do_action( 'woocommerce_product_additional_information', $product );
Технические характеристики
В случае, если мы не используем функционал атрибутов товара, но технические характеристики все же есть — создадим отдельное для них поле.
Заводим поле (не в группе WC, ниже краткого описания).
add_action('admin_init', 'wysiwyg_techparam_meta_box'); function wysiwyg_techparam_meta_box() { add_meta_box('techparam_meta_box' , __('Технические характеристики', 'wysiwyg') , 'custom_wysiwyg', 'product'); } function custom_wysiwyg($post) { $content = get_post_meta($post->ID, 'techparam', true); wp_editor(htmlspecialchars_decode($content) , 'techparam', array( "media_buttons" => true )); } function custom_wysiwyg_save_postdata($post_id) { if (!empty($_POST['techparam'])) { $data = htmlspecialchars($_POST['techparam']); update_post_meta($post_id, 'techparam', $data); } } add_action('save_post', 'custom_wysiwyg_save_postdata');
Выводим поле во вкладке Дополнительная информация
function site_image_field_woocommerce() { global $post; if (get_post_meta($post->ID, 'techparam', true)) { echo '<div id="techparam">'; print htmlspecialchars_decode(get_post_meta($post->ID, 'techparam', true)); echo '</div>'; } } add_action( 'woocommerce_product_additional_information', 'site_image_field_woocommerce', 45 );
Альтернативный способ внедрить информацию во вкладку Доп. информация, т.к. предыдущий код в некоторых случаях не срабатывает.
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 ); function woo_rename_tabs( $tabs ) { global $product; $tabs['additional_information']['callback'] = 'custom_function_name'; return $tabs; } function custom_function_name(){ woocommerce_product_additional_information_tab(); //стандартный вывод additional_information global $post; if (get_post_meta($post->ID, 'techparam', true)) { echo '<div id="techparam">'; print htmlspecialchars_decode(get_post_meta($post->ID, 'techparam', true)); echo '</div>'; } }
Файлы: инструкции, сертификаты и т.п.
Выводим в Additional Information различные файлы, как заводить соответствующие поля в WC описано здесь.
function site_image_field_woocommerce() { global $post; $attachment_id = get_post_meta($post->ID, 'uploader_custom', true); if (get_post_meta($post->ID, 'uploader_custom', true)) { echo '<a id="manual" href="'.wp_get_attachment_url( $attachment_id ).'">'; echo '<p><img src="'.get_template_directory_uri().'/images/pdf.png"></p>'; echo '<p>Инструкция</p>'; echo '</a>'; } } add_action( 'woocommerce_product_additional_information', 'site_image_field_woocommerce', 45 );[site-socialshare]