Forked from bhavik-kiri/add-gift-card-custom-product-type.php
Created
September 28, 2022 22:20
-
-
Save racmanuel/a3d2cfdfe281d1ddd243bac0b258c23d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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