<?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 ) );
}
}
giftcard.php
<?php
/**
* Simple custom product
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product;
do_action( 'gift_card_before_add_to_cart_form' ); ?>
<form class="gift_card_cart" method="post" enctype='multipart/form-data'>
<table cellspacing="0">
<tbody>
<tr>
<td >
<label for="gift_card_amount"><?php echo __( "Amount", 'wcpt' ); ?></label>
</td>
<td class="price">
<?php $get_price = get_post_meta ( $product->get_id(), '_gift_card_price' );
$price = 0;
if ( isset( $get_price[0] ) ) {
$price = wc_price( $get_price[0] ) ;
}
echo $price;
?>
</td>
</tr>
</tbody>
</table>
<button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
</form>
<?php do_action( 'gift_card_after_add_to_cart_form' ); ?>