| |
| <?php
|
|
|
|
|
|
|
|
|
|
|
| class EDD_Chained_Products {
|
|
|
| public function __construct() {
|
|
|
|
|
| add_action( 'init', array( $this, 'textdomain' ) );
|
| add_action( 'edd_post_add_to_cart', array( $this, 'maybe_add_chained_product' ), 10, 3 );
|
| add_action( 'edd_meta_box_settings_fields', array( $this, 'download_chained_setting' ), 100 );
|
|
|
|
|
| add_filter( 'edd_metabox_fields_save', array( $this, 'save_meta' ) );
|
| }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| public function textdomain() {
|
|
|
|
|
| $lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/';
|
| $lang_dir = apply_filters( 'edd_chained_products_languages_directory', $lang_dir );
|
|
|
|
|
| $locale = apply_filters( 'plugin_locale', get_locale(), 'edd-chained-products' );
|
| $mofile = sprintf( '%1$s-%2$s.mo', 'edd-chained-products', $locale );
|
|
|
|
|
| $mofile_local = $lang_dir . $mofile;
|
| $mofile_global = WP_LANG_DIR . '/edd-chained-products/' . $mofile;
|
|
|
| if ( file_exists( $mofile_global ) ) {
|
| load_textdomain( 'edd-chained-products', $mofile_global );
|
| } elseif ( file_exists( $mofile_local ) ) {
|
| load_textdomain( 'edd-chained-products', $mofile_local );
|
| } else {
|
|
|
| load_plugin_textdomain( 'edd-chained-products', false, $lang_dir );
|
| }
|
|
|
| }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| public function maybe_add_chained_product( $download_id, $options, $items ) {
|
|
|
| $chained_products = get_post_meta( $download_id, '_edd_chained_products', true );
|
|
|
| if ( $chained_products && is_array( $chained_products ) ) {
|
|
|
| foreach ( $chained_products as $download_id ) {
|
|
|
| $has_variation = strpos( $download_id, '_' );
|
|
|
| if ( false !== $has_variation ) {
|
|
|
| $price_id = substr( $download_id, $has_variation + 1, strlen( $download_id ) );
|
| $download_id = substr( $download_id, 0, $has_variation );
|
| $options = array( 'price_id' => $price_id );
|
|
|
| if( ! edd_item_in_cart( $download_id, $options ) ) {
|
|
|
| edd_add_to_cart( $download_id, $options );
|
|
|
| }
|
|
|
| } else {
|
|
|
| edd_add_to_cart( $download_id );
|
|
|
| }
|
|
|
| }
|
|
|
| }
|
|
|
| }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| public function download_chained_setting( $download_id ) {
|
|
|
| if( ! current_user_can( 'manage_shop_settings' ) ) {
|
| return;
|
| }
|
|
|
| $chained_products = get_post_meta( $download_id, '_edd_chained_products', true );
|
| ?>
|
| <div id="edd_download_chained_products">
|
| <p>
|
| <strong><?php _e( 'Chained Products', 'edd-chained-products' ); ?></strong>
|
| <span alt="f223" class="edd-help-tip dashicons dashicons-editor-help" title="<?php _e( '<strong>Chained Products</strong>: These are products that will be added to the cart along with this Download product.', 'edd-chained-products' ); ?>"></span>
|
| </p>
|
| <label for="edd_chained_products">
|
| <?php echo EDD()->html->product_dropdown( array(
|
| 'name' => '_edd_chained_products[]',
|
| 'selected' => $chained_products,
|
| 'variations' => true,
|
| 'multiple' => true,
|
| 'chosen' => true
|
| ) ); ?>
|
| <?php _e( 'Select chained products', 'edd-chained-products' ); ?>
|
| </label>
|
| </div>
|
| <?php
|
| }
|
|
|
| /**
|
| * Save our Chained Product metadata
|
| *
|
| * @since 1.0.0
|
| * @return void
|
| */
|
| public function save_meta( $fields ) {
|
|
|
| $fields[] = '_edd_chained_products';
|
| return $fields;
|
| }
|
|
|
| }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| function edd_chained_products_load() {
|
|
|
| $instance = new EDD_Chained_Products();
|
| unset( $instance );
|
|
|
| }
|
| add_action( 'plugins_loaded', 'edd_chained_products_load', 12 );
|
| |
| |
Comments