/** * Related Products * * Display a list of related products and/or up-sells */ if ( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly if( ! class_exists( 'woocommerce' ) ) { add_shortcode( 'av_product_upsells', 'avia_please_install_woo' ); return; } if ( ! class_exists( 'avia_sc_product_upsells' ) ) { class avia_sc_product_upsells extends aviaShortcodeTemplate { /** * Create the config array for the shortcode button */ function shortcode_insert_button() { $this->config['version'] = '1.0'; $this->config['self_closing'] = 'yes'; $this->config['name'] = __( 'Related Products', 'avia_framework' ); $this->config['tab'] = __( 'Plugin Additions', 'avia_framework' ); $this->config['icon'] = AviaBuilder::$path['imagesURL'] . 'sc-tabs.png'; $this->config['order'] = 15; $this->config['target'] = 'avia-target-insert'; $this->config['shortcode'] = 'av_product_upsells'; $this->config['tooltip'] = __( 'Display a list of related products and/or up-sells', 'avia_framework' ); $this->config['drag-level'] = 3; $this->config['tinyMCE'] = array( 'disable' => 'true' ); $this->config['posttype'] = array( 'product', __( 'This element can only be used on single product pages', 'avia_framework' ) ); $this->config['id_name'] = 'id'; $this->config['id_show'] = 'yes'; $this->config['alb_desc_id'] = 'alb_description'; } /** * Popup Elements * * If this function is defined in a child class the element automatically gets an edit button, that, when pressed * opens a modal window that allows to edit the element properties * * @return void */ function popup_elements() { $this->elements = array( array( 'type' => 'tab_container', 'nodescription' => true ), array( 'type' => 'tab', 'name' => __( 'Content', 'avia_framework' ), 'nodescription' => true ), array( 'type' => 'template', 'template_id' => $this->popup_key( 'content_upsells' ) ), array( 'type' => 'tab_close', 'nodescription' => true ), array( 'type' => 'tab_container_close', 'nodescription' => true ) ); } /** * Create and register templates for easier maintainance * * @since 4.6.4 */ protected function register_dynamic_templates() { /** * Content Tab * =========== */ $c = array( array( 'name' => __( 'Display options', 'avia_framework' ), 'desc' => __( 'Choose which products you want to display', 'avia_framework' ), 'id' => 'display', 'type' => 'select', 'std' => 'upsells related', 'subtype' => array( __( 'Display up-sells and related products', 'avia_framework' ) => 'upsells related', __( 'Display up-sells only', 'avia_framework' ) => 'upsells', __( 'Display related products only', 'avia_framework' ) => 'related' ) ), array( 'name' => __( 'Number of items', 'avia_framework' ), 'desc' => __( 'Choose the maximum number of products to display', 'avia_framework' ), 'id' => 'count', 'type' => 'select', 'std' => '4', 'subtype' => array( '1' =>'1', '2' =>'2', '3' =>'3', '4' =>'4', '5' =>'5' ) ), array( 'name' => __( 'WooCommerce Product visibility?', 'avia_framework' ), 'desc' => __( 'Select the visibility of WooCommerce products. Default setting can be set at Woocommerce -> Settings -> Products -> Inventory -> Out of stock visibility. Currently it is only possible to hide products out of stock.', 'avia_framework' ), 'id' => 'wc_prod_visible', 'type' => 'select', 'std' => '', 'subtype' => array( __( 'Use default WooCommerce Setting (Settings -> Products -> Out of stock visibility)', 'avia_framework' ) => '', __( 'Hide products out of stock', 'avia_framework' ) => 'hide', // __( 'Show products out of stock', 'avia_framework' ) => 'show' ) ), ); AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'content_upsells' ), $c ); } /** * Editor Element - this function defines the visual appearance of an element on the AviaBuilder Canvas * Most common usage is to define some markup in the $params['innerHtml'] which is then inserted into the drag and drop container * Less often used: $params['data'] to add data attributes, $params['class'] to modify the className * * * @param array $params this array holds the default values for $content and $args. * @return $params the return array usually holds an innerHtml key that holds item specific markup. */ function editor_element( $params ) { $params = parent::editor_element( $params ); return $params; } /** * Frontend Shortcode Handler * * @param array $atts array of attributes * @param string $content text within enclosing form of shortcode element * @param string $shortcodename the shortcode found, when == callback name * @return string $output returns the modified html string */ function shortcode_handler( $atts, $content = '', $shortcodename = '', $meta = '' ) { global $avia_config, $product; // fix for seo plugins which execute the do_shortcode() function before everything is loaded if( ! function_exists( 'WC' ) || ! WC() instanceof WooCommerce || ! is_object( WC()->query ) || ! $product instanceof WC_Product ) { return ''; } extract( shortcode_atts( array( 'display' => 'upsells related', 'count' => 4, 'wc_prod_visible' => '' ), $atts, $this->config['shortcode'] ) ); if( ! isset( $meta['el_class'] ) ) { $meta['el_class'] = ''; } // force to ignore WC default setting - see hooked function avia_wc_product_is_visible switch( $wc_prod_visible ) { case 'show': $avia_config['woocommerce']['catalog_product_visibility'] = 'show_all'; break; case 'hide': $avia_config['woocommerce']['catalog_product_visibility'] = 'hide_out_of_stock'; break; default: $avia_config['woocommerce']['catalog_product_visibility'] = 'use_default'; break; } $output = ''; // $product = wc_get_product(); $output .= "
'; // reset $avia_config['woocommerce']['catalog_product_visibility'] = 'use_default'; return $output; } } }Bądź wiesz, że możesz grać w ICE Casino również wyjąwszy zapisu, zupełnie zbyt darmo? - ice casino zaloguj
Gareggiare può arrecare sottomissione patologica – É impedito il incontro ai minori successo anni 18. - gratowin casino login
- olybet
Również w tymże wypadku bezpłatne spiny mówią same zbyt siebie. - bison casino
Der besteht taktlos seinem Kapitaleinsatz, der qua deinem Multiplikator multipliziert sieht man. - chicken road
Quanto aos métodos de depósito e retirada, eles também são seguros e protegidos. - aajogo app
Un gratifica osservando la assenza successo ricaica a confusione da cinquanta euro è una impegno piuttosto unica per esempio rara. - winspark
La commissione ci consente di legare bonusscommesse360.it costantemente aggiornato e funzionante. - eurobet ippica
Leave a Reply
Want to join the discussion?Feel free to contribute!