Přidání polí k produktu WooCommerce

Na nově spuštěném webu myairlines.cz, který nabízí opravdu skvělý simulátor Boeing 737, jsem vytvořil spoustu zajímavých funkcionalit, např. generování voucheru a letenek v PDF po dokončení objednávky ve WooCommerce, generování kódů pro rezervační systém, napojení na GoPay a EET, rezervační systém na míru atd.

Jedním z potřebných doplňků bylo přidání custom polí pro produkty ve WooCommerce. To je v novějších verzích WooCommerce opravdu jednoduché:

 

[php]
add_action(‚woocommerce_product_options_general_product_data‘, array($this, ‚add_custom_general_fields‘));
add_action(‚woocommerce_process_product_meta‘, array($this, ‚add_custom_general_fields_save‘));

/**
* Display Custom WooCommerce fields
**/
function add_custom_general_fields()
{
global $woocommerce, $post;

echo ‚<div class="options_group">‘;

woocommerce_wp_text_input(
array(
‚id‘ => ‚_pdf_product_name‘,
‚label‘ => __(‚Product name on Voucher/Boarding Ticket‘, ‚mw‘),
‚desc_tip‘ => ‚true‘,
‚description‘ => __(‚Enter the product name, that will display on Voucher/Boarding Ticket.‘, ‚mw‘)
)
);

// Checkbox
woocommerce_wp_checkbox(
array(
‚id‘ => ‚_disable_reservation‘,
‚label‘ => __("Disable reservations" , ‚mya‘ ),
‚description‘ => __( ‚Check to disable reservations for this product!‘, ‚mya‘ )
)
);
woocommerce_wp_checkbox(
array(
‚id‘ => ‚_is_gift_card‘,
‚label‘ => __("Gift card" , ‚mya‘ ),
‚description‘ => __( ‚Check if this product is gift card!‘, ‚mya‘ )
)
);

echo ‚</div>‘;
}

/**
* Save custom WooCommerce fields
**/
function add_custom_general_fields_save($post_id)
{
$woocommerce_text_field = $_POST[‚_pdf_product_name‘];
if (!empty($woocommerce_text_field))
update_post_meta($post_id, ‚_pdf_product_name‘, esc_attr($woocommerce_text_field));

// Checkbox
$woocommerce_checkbox = isset( $_POST[‚_disable_reservation‘] ) ? ‚yes‘ : ‚no‘;
update_post_meta( $post_id, ‚_disable_reservation‘, $woocommerce_checkbox );

$woocommerce_checkbox = isset( $_POST[‚_is_gift_card‘] ) ? ‚yes‘ : ‚no‘;
update_post_meta( $post_id, ‚_is_gift_card‘, $woocommerce_checkbox );
}
[/php]

Výsledek je samozřejmě upgrade-safe a vypadá takto:

Přidat komentář