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é:

 

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 );
    }

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

Přidat komentář