Plugin do WooCommerce para criação de combos de produtos.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

155 lines
3.9 KiB

<?php
/**
* The admin-specific functionality of the plugin.
*
* @link https://horizontes.info
* @since 1.0.0
*
* @package Wc_Cdp
* @subpackage Wc_Cdp/admin
*/
/**
* The admin-specific functionality of the plugin.
*
* Defines the plugin name, version, and two examples hooks for how to
* enqueue the admin-specific stylesheet and JavaScript.
*
* @package Wc_Cdp
* @subpackage Wc_Cdp/admin
* @author Horizontes Coop. <contato@horizontes.info>
*/
class Wc_Cdp_Admin {
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
}
/**
* Register the stylesheets for the admin area.
*
* @since 1.0.0
*/
public function enqueue_styles() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Wc_Cdp_Loader as all of the hooks are defined
* in that particular class.
*
* The Wc_Cdp_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/wc-cdp-admin.css', array(), $this->version, 'all' );
}
/**
* Register the JavaScript for the admin area.
*
* @since 1.0.0
*/
public function enqueue_scripts() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Wc_Cdp_Loader as all of the hooks are defined
* in that particular class.
*
* The Wc_Cdp_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wc-cdp-admin.js', array( 'jquery' ), $this->version, false );
}
/**
* Adds bundled products fields to the WooCoommerce metabox
*
* @since 1.0.0
*/
public function display_product_fields()
{
global $post;
$product = wc_get_product( $post->ID );
$bundle_products = $product->get_meta('_wc_cdp_bundle_products');
$bundle_coupon = $product->get_meta('_wc_cdp_bundle_coupon');
$coupons = get_posts([
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'asc',
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'meta_key' => 'discount_type',
'meta_value' => array('percent', 'fixed_cart'),
'meta_compare' => 'IN',
]);
$coupons = array_combine( array_column($coupons, 'post_title'), array_column($coupons, 'post_title') );
$coupons = array( '' => __( 'Não aplicar cupom', 'wc-ped' ) ) + $coupons;
require('partials/product-fields.php');
}
/**
* Saves bundled products info as product metadata
*
* @since 1.0.0
*
* @param int $post_id The post ID.
*/
public function save_product_fields( $post_id )
{
$product = wc_get_product( $post_id );
if ( isset($_POST['_wc_cdp_bundle_products']) && $_POST['_wc_cdp_bundle_products'] ) {
$product->update_meta_data( '_wc_cdp_bundle_products', $_POST['_wc_cdp_bundle_products'] );
}
if ( isset($_POST['_wc_cdp_bundle_coupon']) && $_POST['_wc_cdp_bundle_coupon'] ) {
$product->update_meta_data( '_wc_cdp_bundle_coupon', $_POST['_wc_cdp_bundle_coupon'] );
}
$product->save();
}
}