У товаров 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]
