Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save racmanuel/a3d2cfdfe281d1ddd243bac0b258c23d to your computer and use it in GitHub Desktop.
Save racmanuel/a3d2cfdfe281d1ddd243bac0b258c23d to your computer and use it in GitHub Desktop.
<?php
/*
Plugin Name: Add Gift Card as Custom Product Type
Description: A simple demo plugin on how to add Gift Card as your custom product type
Author: Bhavik Kiri
Version: 1.0
*/
add_action( 'plugins_loaded', 'wcpt_register_gift_card_type' );
function wcpt_register_gift_card_type () {
// declare the product class
class WC_Product_Gift_Card extends WC_Product {
public function __construct( $product ) {
$this->product_type = 'gift_card';
parent::__construct( $product );
// add additional functions here
}
}
}
add_filter( 'product_type_selector', 'wcpt_add_gift_card_type' );
function wcpt_add_gift_card_type ( $type ) {
// Key should be exactly the same as in the class product_type
$type[ 'gift_card' ] = __( 'Gift Card' );
return $type;
}
add_filter( 'woocommerce_product_data_tabs', 'gift_card_tab' );
function gift_card_tab( $tabs) {
$tabs['gift_card'] = array(
'label' => __( 'Gift Card', 'wcpt' ),
'target' => 'gift_card_options',
'class' => ('show_if_gift_card'),
);
return $tabs;
}
add_action( 'woocommerce_product_data_panels', 'wcpt_gift_card_options_product_tab_content' );
function wcpt_gift_card_options_product_tab_content() {
// Dont forget to change the id in the div with your target of your product tab
?><div id='gift_card_options' class='panel woocommerce_options_panel'><?php
?><div class='options_group'><?php
woocommerce_wp_checkbox( array(
'id' => '_enable_gift_card',
'label' => __( 'Enable Gift Card Product', 'wcpt' ),
) );
woocommerce_wp_text_input( array(
'id' => '_gift_card_price',
'label' => __( 'Price', 'wcpt' ),
'placeholder' => '',
'desc_tip' => 'true',
'description' => __( 'Enter Gift Card Price.', 'wcpt' ),
));
?></div>
</div><?php
}
add_action( 'woocommerce_process_product_meta', 'save_gift_card_options_field' );
function save_gift_card_options_field( $post_id ) {
$enable_gift_card = isset( $_POST['_enable_gift_card'] ) ? 'yes' : 'no';
update_post_meta( $post_id, '_enable_gift_card', $enable_gift_card );
if ( isset( $_POST['_gift_card_price'] ) ) :
update_post_meta( $post_id, '_gift_card_price', sanitize_text_field( $_POST['_gift_card_price'] ) );
endif;
}
add_action( 'woocommerce_single_product_summary', 'gift_card_template', 60 );
function gift_card_template () {
global $product;
if ( 'gift_card' == $product->get_type() ) {
$template_path = plugin_dir_path( __FILE__ ) . 'templates/';
// Load the template
wc_get_template( 'single-product/add-to-cart/gift_card.php',
'',
'',
trailingslashit( $template_path ) );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment