<?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 the plugin's settings page under WooCommerce's Products tab
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function add_settings_tab( $sections )
|
|
{
|
|
$sections['wc-cdp'] = __( 'Combos de produtos', 'wc-cdp' );
|
|
return $sections;
|
|
}
|
|
|
|
public function display_settings_tab( $settings, $current_section )
|
|
{
|
|
if ( $current_section == 'wc-cdp' ) {
|
|
$settings_wc_cdp = array();
|
|
|
|
$settings_wc_cdp[] = array( 'name' => __( 'Combos de produtos', 'wc-cdp' ), 'type' => 'title', 'desc' => __( 'As opções a seguir são usadas para configurar os combos de produtos', 'wc-cdp' ), 'id' => 'wcslider' );
|
|
|
|
$settings_wc_cdp[] = array(
|
|
'name' => __( 'Título do popup', 'wc-cdp' ),
|
|
'id' => 'wc_cdp_title',
|
|
'type' => 'text',
|
|
);
|
|
|
|
$settings_wc_cdp[] = array(
|
|
'name' => __( 'Descrição do popup', 'wc-cdp' ),
|
|
'id' => 'wc_cdp_description',
|
|
'type' => 'textarea',
|
|
'desc_tip' => __( 'É exibida logo abaixo do título, antes dos produtos do combo', 'wc-cdp' ),
|
|
);
|
|
|
|
$settings_wc_cdp[] = array(
|
|
'name' => __( 'Texto do botão', 'wc-cdp' ),
|
|
'id' => 'wc_cdp_add_to_cart_text',
|
|
'type' => 'text',
|
|
);
|
|
|
|
$settings_wc_cdp[] = array( 'type' => 'sectionend', 'id' => 'wc-cdp' );
|
|
return $settings_wc_cdp;
|
|
|
|
} else {
|
|
return $settings;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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();
|
|
}
|
|
|
|
}
|