Z nowym rokiem postanowiliśmy udoskonalić stronę naszego laboratorium. Przez co pojawiło się sporo rzeczy, które trzeba było dodać aby to zaczęło lepiej i sprawniej funkcjonować. Jedną z takich rzeczy jest dodanie dwóch niestandardowych pól do zakładki „ogólne” w edycji produktu. Musiały być one spersonalizowane więc trochę czasu mi to zajęło żeby je dodać, a jeszcze więcej żeby je wyświetlić na stronie produktu, ale w końcu się udało i chce się z wami podzielić moimi dokonaniami.
Dwa nowe pola, które musiały się koniecznie pojawić to jak widać na załączonym obrazku powyżej czas realizacji badania i materiał. Schemat tego rozwiązania nie jest w sumie aż tak trudny jak wspomniałem na początku biorąc pod uwagę samo działanie. Pierwszy fragment kodu tworzy pola, które pozwalają nam wpisać zawartość, drugi fragment kodu zapisuje treść a trzeci fragment wczytuje te dane i wyświetla je na stronie produktu.
function woocommerce_product_custom_fields()
{
$args = array(
'id' => 'woocommerce_custom_fields',
'label' => __('Czas realizacji badania:', 'cwoa'),
);
woocommerce_wp_text_input($args);
}
add_action('woocommerce_product_options_general_product_data', 'woocommerce_product_custom_fields');
//------------------------------------------------------------------------------------------------------------//
function save_woocommerce_product_custom_fields($post_id)
{
$product = wc_get_product($post_id);
$custom_fields_woocommerce_title = isset($_POST['woocommerce_custom_fields']) ? $_POST['woocommerce_custom_fields'] : '';
$product->update_meta_data('woocommerce_custom_fields', sanitize_text_field($custom_fields_woocommerce_title));
$product->save();
}
add_action('woocommerce_process_product_meta', 'save_woocommerce_product_custom_fields');
//------------------------------------------------------------------------------------------------------------//
function woocommerce_custom_fields_display()
{
global $post;
$product = wc_get_product($post->ID);
$custom_fields_woocommerce_title = $product->get_meta('woocommerce_custom_fields');
if ($custom_fields_woocommerce_title) {
printf(
'<div><label><b><font-face="montserrat" color="black">%s</font></b></label></div>',
esc_html($custom_fields_woocommerce_title)
);
}
}
add_action('woocommerce_product_tabs', 'woocommerce_custom_fields_display');
function woocommerce_product_custom_material()
{
$args = array(
'id' => 'woocommerce_custom_fields_mat',
'label' => __('Materiał:', 'cwoa'),
);
woocommerce_wp_text_input($args);
}
add_action('woocommerce_product_options_general_product_data', 'woocommerce_product_custom_material');
//------------------------------------------------------------------------------------------------------------//
function save_woocommerce_product_custom_material($post_id)
{
$product = wc_get_product($post_id);
$custom_fields_woocommerce_title = isset($_POST['woocommerce_custom_fields_mat']) ? $_POST['woocommerce_custom_fields_mat'] : '';
$product->update_meta_data('woocommerce_custom_fields_mat', sanitize_text_field($custom_fields_woocommerce_title));
$product->save();
}
add_action('woocommerce_process_product_meta', 'save_woocommerce_product_custom_material');
//------------------------------------------------------------------------------------------------------------//
function woocommerce_custom_fields_material()
{
global $post;
$product = wc_get_product($post->ID);
$custom_fields_woocommerce_title = $product->get_meta('woocommerce_custom_fields_mat');
if ($custom_fields_woocommerce_title) {
printf(
'<div><label><font color="#D5D5D5">Materiał</font><br><b><font-face="montserrat" color="black">%s</font></b></label></div>',
esc_html($custom_fields_woocommerce_title)
);
}
}
add_action('woocommerce_product_tabs', 'woocommerce_custom_fields_material');
A tak prezentuje się efekt finalny.
Wystarczy przekopiować kod i wkleić go do pliku functions.php, i oczywiście podmienić nazwy wedle własnego uznania.