Esempio n. 1
9
function wpb_wl_hook_quickview_content()
{
    global $post, $woocommerce, $product;
    ?>
	<div id="wpb_wl_quick_view_<?php 
    echo get_the_id();
    ?>
" class="mfp-hide mfp-with-anim wpb_wl_quick_view_content wpb_wl_clearfix">
		<div class="wpb_wl_images">
			<?php 
    if (has_post_thumbnail()) {
        $image_title = esc_attr(get_the_title(get_post_thumbnail_id()));
        $image_link = wp_get_attachment_url(get_post_thumbnail_id());
        $image = get_the_post_thumbnail($post->ID, apply_filters('single_product_large_thumbnail_size', 'shop_single'), array('title' => $image_title));
        $attachment_count = count($product->get_gallery_attachment_ids());
        if ($attachment_count > 0) {
            $gallery = '[product-gallery]';
        } else {
            $gallery = '';
        }
        echo apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" data-rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image), $post->ID);
    } else {
        echo apply_filters('woocommerce_single_product_image_html', sprintf('<img src="%s" alt="%s" />', wc_placeholder_img_src(), __('Placeholder', 'woocommerce-lightbox')), $post->ID);
    }
    ?>
		</div>
		<div class="wpb_wl_summary">
			<!-- Product Title -->
			<h2 class="wpb_wl_product_title"><?php 
    the_title();
    ?>
</h2>

			<!-- Product Price -->
			<?php 
    if ($price_html = $product->get_price_html()) {
        ?>
				<span class="price wpb_wl_product_price"><?php 
        echo $price_html;
        ?>
</span>
			<?php 
    }
    ?>

			<!-- Product short description -->
			<?php 
    woocommerce_template_single_excerpt();
    ?>

			<!-- Product cart link -->
			<?php 
    woocommerce_template_single_add_to_cart();
    ?>

		</div>
	</div>
	<?php 
}
 public static function wc_placeholder_img_src()
 {
     if (self::is_wc_version_gte_2_1()) {
         return wc_placeholder_img_src();
     } else {
         return woocommerce_placeholder_img_src();
     }
 }
Esempio n. 3
0
function sw_product_thumbnail($size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0)
{
    global $post;
    $html = '';
    $id = get_the_ID();
    $gallery = get_post_meta($id, '_product_image_gallery', true);
    $attachment_image = '';
    if (!empty($gallery)) {
        $gallery = explode(',', $gallery);
        $first_image_id = $gallery[0];
        $attachment_image = wp_get_attachment_image($first_image_id, $size, false, array('class' => 'hover-image back'));
    }
    $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), '');
    if (has_post_thumbnail()) {
        if ($attachment_image) {
            $html .= '<div class="product-thumb-hover">';
            $html .= get_the_post_thumbnail($post->ID, $size);
            $html .= $attachment_image;
            $html .= '</div>';
        } else {
            $html .= get_the_post_thumbnail($post->ID, $size);
        }
        return $html;
    } elseif (wc_placeholder_img_src()) {
        $html .= wc_placeholder_img($size);
        return $html;
    }
}
function woocommerce_category_archive_description()
{
    if (is_tax(array('product_cat', 'product_tag')) && get_query_var('paged') == 0) {
        $description = wc_format_content(term_description());
        $image = false;
        if (is_tax() || is_tag() || is_category()) {
            $term = get_queried_object();
            $thumbnail_id = absint(get_woocommerce_term_meta($term->term_id, 'thumbnail_id', true));
            if ($thumbnail_id) {
                $image = wp_get_attachment_image($thumbnail_id, 250);
            } else {
                $image = wc_placeholder_img_src();
            }
        }
        if ($description) {
            $string = '<div class="row margin-bottom">';
            if ($image) {
                $string .= '<div class="col-sm-4 col-sm-push-8">' . $image . '</div>';
            }
            $string .= '<div class="term-description col-sm-8';
            if ($image) {
                $string .= ' col-sm-pull-4';
            }
            $string .= '">' . $description . '</div></div>';
            echo $string;
        }
    }
}
Esempio n. 5
0
 function test_product_response()
 {
     $data = array('id' => 1, 'sku' => 'sku12345');
     $product = $this->mock_simple_product();
     $response = $this->products_api->product_response($data, $product, null, null);
     $this->assertEquals(0.25, $response['stock_quantity']);
     $this->assertEquals('sku12345', $response['barcode']);
     $this->assertEquals(wc_placeholder_img_src(), $response['featured_src']);
 }
Esempio n. 6
0
 function woocommerce_get_product_thumbnail($size = 'news-thumb', $placeholder_width = 0, $placeholder_height = 0)
 {
     global $post;
     if (has_post_thumbnail()) {
         return get_the_post_thumbnail($post->ID, $size, array('class' => 'img-responsive'));
     } elseif (wc_placeholder_img_src()) {
         return wc_placeholder_img($size);
     }
 }
/**
 * Outputs placeholder image
 *
 * @since 1.0.0
 */
function wpex_woo_placeholder_img()
{
    if (function_exists('wc_placeholder_img_src') && wc_placeholder_img_src()) {
        $placeholder = '<img src="' . wc_placeholder_img_src() . '" alt="' . __('Placeholder Image', 'wpex') . '" class="woo-entry-image-main" />';
        $placeholder = apply_filters('wpex_woo_placeholder_img_html', $placeholder);
        if ($placeholder) {
            echo $placeholder;
        }
    }
}
Esempio n. 8
0
 function ns_get_post_thumbnail_url()
 {
     if (function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID)) {
         $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), full);
         if (!$thumbnail[0] || $thumbnail[0] == "") {
             return wc_placeholder_img_src();
         } else {
             return $thumbnail[0];
         }
     }
     echo wc_placeholder_img_src();
 }
 public static function woops_get_product_thumbnail($post_id, $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0)
 {
     global $woocommerce;
     $woocommerce_db_version = get_option('woocommerce_db_version', null);
     $shop_catalog = version_compare($woocommerce_db_version, '2.1', '<') ? $woocommerce->get_image_size('shop_catalog') : wc_get_image_size('shop_catalog');
     if (is_array($shop_catalog) && isset($shop_catalog['width']) && $placeholder_width == 0) {
         $placeholder_width = $shop_catalog['width'];
     }
     if (is_array($shop_catalog) && isset($shop_catalog['height']) && $placeholder_height == 0) {
         $placeholder_height = $shop_catalog['height'];
     }
     if (has_post_thumbnail($post_id)) {
         return get_the_post_thumbnail($post_id, $size);
     }
     $mediumSRC = '';
     if (trim($mediumSRC == '')) {
         $args = array('post_parent' => $post_id, 'numberposts' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'DESC', 'orderby' => 'ID', 'post_status' => null);
         $attachments = get_posts($args);
         if ($attachments) {
             foreach ($attachments as $attachment) {
                 $mediumSRC = wp_get_attachment_image($attachment->ID, $size, true);
                 break;
             }
         }
     }
     if (trim($mediumSRC == '')) {
         // Load the product
         $product = get_post($post_id);
         // Get ID of parent product if one exists
         if (!empty($product->post_parent)) {
             $post_id = $product->post_parent;
         }
         if (has_post_thumbnail($post_id)) {
             return get_the_post_thumbnail($post_id, $size);
         }
         if (trim($mediumSRC == '')) {
             $args = array('post_parent' => $post_id, 'numberposts' => 1, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'DESC', 'orderby' => 'ID', 'post_status' => null);
             $attachments = get_posts($args);
             if ($attachments) {
                 foreach ($attachments as $attachment) {
                     $mediumSRC = wp_get_attachment_image($attachment->ID, $size, true);
                     break;
                 }
             }
         }
     }
     if (trim($mediumSRC != '')) {
         return $mediumSRC;
     } else {
         return '<img src="' . (version_compare($woocommerce_db_version, '2.1', '<') ? woocommerce_placeholder_img_src() : wc_placeholder_img_src()) . '" alt="Placeholder" width="' . $placeholder_width . '" height="' . $placeholder_height . '" />';
     }
 }
Esempio n. 10
0
function woocommerce_subcategory_thumbnail($category)
{
    $thumbnail_id = get_woocommerce_term_meta($category->term_id, 'thumbnail_id', true);
    if ($thumbnail_id) {
        $image = wp_get_attachment_image_src($thumbnail_id, 'full');
        $image = $image[0];
    } else {
        $image = wc_placeholder_img_src();
    }
    if ($image) {
        // Prevent esc_url from breaking spaces in urls for image embeds
        // Ref: http://core.trac.wordpress.org/ticket/23605
        $image = str_replace(' ', '%20', $image);
        echo '<img alt="' . esc_attr($category->name) . '" src="' . esc_url($image) . '" />';
    }
}
Esempio n. 11
0
function woocommerce_subcategory_thumbnail($category)
{
    $small_thumbnail_size = apply_filters('single_product_small_thumbnail_size', 'shop_catalog');
    $dimensions = wc_get_image_size($small_thumbnail_size);
    $thumbnail_id = get_woocommerce_term_meta($category->term_id, 'thumbnail_id', true);
    if ($thumbnail_id) {
        $image = wp_get_attachment_image_src($thumbnail_id, $small_thumbnail_size);
        $image = $image[0];
    } else {
        $image = wc_placeholder_img_src();
    }
    if ($image) {
        // Prevent esc_url from breaking spaces in urls for image embeds
        // Ref: http://core.trac.wordpress.org/ticket/23605
        $image = str_replace(' ', '%20', $image);
        echo '<img src="' . esc_url($image) . '" alt="' . esc_attr($category->name) . '"/>';
    }
}
Esempio n. 12
0
function spyropress_wc_product_thumbnail()
{
    $image = '';
    if (has_post_thumbnail()) {
        $image = get_image(array('echo' => false, 'class' => 'img-responsive'));
    } elseif (wc_placeholder_img_src()) {
        $image = wc_placeholder_img('shop_single');
    }
    echo '
    <a href="' . get_permalink() . '">
		<span class="product-thumb-info-image">
			<span class="product-thumb-info-act">
				<span class="product-thumb-info-act-left"><em>' . __('View', 'spyropress') . '</em></span>
				<span class="product-thumb-info-act-right"><em><i class="icon icon-plus"></i> ' . __('Details', 'spyropress') . '</em></span>
			</span>
			' . str_replace('wp-post-image', 'img-responsive', $image) . '
		</span>
	</a>';
}
 /**
  * Enqueue scripts
  */
 public function admin_scripts()
 {
     global $post;
     get_currentuserinfo();
     $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
     // Register scripts
     wp_register_script('woocommerce_admin', WC()->plugin_url() . '/assets/js/admin/woocommerce_admin' . $suffix . '.js', array('jquery', 'jquery-blockui', 'jquery-ui-sortable', 'jquery-ui-widget', 'jquery-ui-core', 'jquery-tiptip'), WC_VERSION);
     wp_register_script('jquery-blockui', WC()->plugin_url() . '/assets/js/jquery-blockui/jquery.blockUI' . $suffix . '.js', array('jquery'), '2.66', true);
     wp_register_script('jquery-tiptip', WC()->plugin_url() . '/assets/js/jquery-tiptip/jquery.tipTip' . $suffix . '.js', array('jquery'), WC_VERSION, true);
     wp_register_script('accounting', WC()->plugin_url() . '/assets/js/admin/accounting' . $suffix . '.js', array('jquery'), '0.3.2');
     wp_register_script('round', WC()->plugin_url() . '/assets/js/admin/round' . $suffix . '.js', array('jquery'), WC_VERSION);
     wp_register_script('wc-admin-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes' . $suffix . '.js', array('jquery', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'accounting', 'round', 'wc-enhanced-select', 'plupload-all', 'stupidtable'), WC_VERSION);
     wp_register_script('qrcode', WC()->plugin_url() . '/assets/js/admin/jquery.qrcode.min.js', array('jquery'), WC_VERSION);
     wp_register_script('stupidtable', WC()->plugin_url() . '/assets/js/stupidtable/stupidtable' . $suffix . '.js', array('jquery'), WC_VERSION);
     wp_register_script('wc-admin-notices', WC()->plugin_url() . '/assets/js/admin/woocommerce_notices' . $suffix . '.js', array('jquery'), WC_VERSION, true);
     // Select2 is the replacement for chosen
     wp_register_script('select2', WC()->plugin_url() . '/assets/js/select2/select2' . $suffix . '.js', array('jquery'), '3.5.2');
     wp_register_script('wc-enhanced-select', WC()->plugin_url() . '/assets/js/admin/wc-enhanced-select' . $suffix . '.js', array('jquery', 'select2'), WC_VERSION);
     wp_localize_script('select2', 'wc_select_params', array('i18n_matches_1' => _x('One result is available, press enter to select it.', 'enhanced select', 'woocommerce'), 'i18n_matches_n' => _x('%qty% results are available, use up and down arrow keys to navigate.', 'enhanced select', 'woocommerce'), 'i18n_no_matches' => _x('No matches found', 'enhanced select', 'woocommerce'), 'i18n_ajax_error' => _x('Loading failed', 'enhanced select', 'woocommerce'), 'i18n_input_too_short_1' => _x('Please enter 1 or more characters', 'enhanced select', 'woocommerce'), 'i18n_input_too_short_n' => _x('Please enter %qty% or more characters', 'enhanced select', 'woocommerce'), 'i18n_input_too_long_1' => _x('Please delete 1 character', 'enhanced select', 'woocommerce'), 'i18n_input_too_long_n' => _x('Please delete %qty% characters', 'enhanced select', 'woocommerce'), 'i18n_selection_too_long_1' => _x('You can only select 1 item', 'enhanced select', 'woocommerce'), 'i18n_selection_too_long_n' => _x('You can only select %qty% items', 'enhanced select', 'woocommerce'), 'i18n_load_more' => _x('Loading more results&hellip;', 'enhanced select', 'woocommerce'), 'i18n_searching' => _x('Searching&hellip;', 'enhanced select', 'woocommerce')));
     wp_localize_script('wc-enhanced-select', 'wc_enhanced_select_params', array('ajax_url' => admin_url('admin-ajax.php'), 'search_products_nonce' => wp_create_nonce('search-products'), 'search_customers_nonce' => wp_create_nonce('search-customers')));
     // Accounting
     wp_localize_script('accounting', 'accounting_params', array('mon_decimal_point' => wc_get_price_decimal_separator()));
     // WooCommerce admin pages
     wp_enqueue_script('woocommerce_admin');
     wp_enqueue_script('iris');
     wp_enqueue_script('wc-enhanced-select');
     wp_enqueue_script('jquery-ui-sortable');
     wp_enqueue_script('jquery-ui-autocomplete');
     $locale = localeconv();
     $decimal = isset($locale['decimal_point']) ? $locale['decimal_point'] : '.';
     $params = array('i18n_decimal_error' => sprintf(__('Please enter in decimal (%s) format without thousand separators.', 'woocommerce'), $decimal), 'i18n_mon_decimal_error' => sprintf(__('Please enter in monetary decimal (%s) format without thousand separators and currency symbols.', 'woocommerce'), wc_get_price_decimal_separator()), 'i18n_country_iso_error' => __('Please enter in country code with two capital letters.', 'woocommerce'), 'i18_sale_less_than_regular_error' => __('Please enter in a value less than the regular price.', 'woocommerce'), 'decimal_point' => $decimal, 'mon_decimal_point' => wc_get_price_decimal_separator());
     wp_localize_script('woocommerce_admin', 'woocommerce_admin', $params);
     // Meta boxes
     wp_enqueue_media();
     wp_enqueue_script('wc-admin-product-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes-product' . $suffix . '.js', array('wc-admin-meta-boxes'), WC_VERSION);
     wp_enqueue_script('wc-admin-variation-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes-product-variation' . $suffix . '.js', array('wc-admin-meta-boxes'), WC_VERSION);
     $params = array('post_id' => isset($post->ID) ? $post->ID : '', 'plugin_url' => WC()->plugin_url(), 'ajax_url' => admin_url('admin-ajax.php'), 'woocommerce_placeholder_img_src' => wc_placeholder_img_src(), 'add_variation_nonce' => wp_create_nonce("add-variation"), 'link_variation_nonce' => wp_create_nonce("link-variations"), 'delete_variations_nonce' => wp_create_nonce("delete-variations"), 'i18n_link_all_variations' => esc_js(__('Are you sure you want to link all variations? This will create a new variation for each and every possible combination of variation attributes (max 50 per run).', 'woocommerce')), 'i18n_enter_a_value' => esc_js(__('Enter a value', 'woocommerce')), 'i18n_enter_a_value_fixed_or_percent' => esc_js(__('Enter a value (fixed or %)', 'woocommerce')), 'i18n_delete_all_variations' => esc_js(__('Are you sure you want to delete all variations? This cannot be undone.', 'woocommerce')), 'i18n_last_warning' => esc_js(__('Last warning, are you sure?', 'woocommerce')), 'i18n_choose_image' => esc_js(__('Choose an image', 'woocommerce')), 'i18n_set_image' => esc_js(__('Set variation image', 'woocommerce')), 'i18n_variation_added' => esc_js(__("variation added", 'woocommerce')), 'i18n_variations_added' => esc_js(__("variations added", 'woocommerce')), 'i18n_no_variations_added' => esc_js(__("No variations added", 'woocommerce')), 'i18n_remove_variation' => esc_js(__('Are you sure you want to remove this variation?', 'woocommerce')), 'i18n_scheduled_sale_start' => esc_js(__('Sale start date (YYYY-MM-DD format or leave blank)', 'woocommerce')), 'i18n_scheduled_sale_end' => esc_js(__('Sale end date  (YYYY-MM-DD format or leave blank)', 'woocommerce')));
     wp_localize_script('wc-admin-variation-meta-boxes', 'woocommerce_admin_meta_boxes_variations', $params);
     $params = array('remove_item_notice' => __('Are you sure you want to remove the selected items? If you have previously reduced this item\'s stock, or this order was submitted by a customer, you will need to manually restore the item\'s stock.', 'woocommerce'), 'i18n_select_items' => __('Please select some items.', 'woocommerce'), 'i18n_do_refund' => __('Are you sure you wish to process this refund? This action cannot be undone.', 'woocommerce'), 'i18n_delete_refund' => __('Are you sure you wish to delete this refund? This action cannot be undone.', 'woocommerce'), 'i18n_delete_tax' => __('Are you sure you wish to delete this tax column? This action cannot be undone.', 'woocommerce'), 'remove_item_meta' => __('Remove this item meta?', 'woocommerce'), 'remove_attribute' => __('Remove this attribute?', 'woocommerce'), 'name_label' => __('Name', 'woocommerce'), 'remove_label' => __('Remove', 'woocommerce'), 'click_to_toggle' => __('Click to toggle', 'woocommerce'), 'values_label' => __('Value(s)', 'woocommerce'), 'text_attribute_tip' => __('Enter some text, or some attributes by pipe (|) separating values.', 'woocommerce'), 'visible_label' => __('Visible on the product page', 'woocommerce'), 'used_for_variations_label' => __('Used for variations', 'woocommerce'), 'new_attribute_prompt' => __('Enter a name for the new attribute term:', 'woocommerce'), 'calc_totals' => __('Calculate totals based on order items, discounts, and shipping?', 'woocommerce'), 'calc_line_taxes' => __('Calculate line taxes? This will calculate taxes based on the customers country. If no billing/shipping is set it will use the store base country.', 'woocommerce'), 'copy_billing' => __('Copy billing information to shipping information? This will remove any currently entered shipping information.', 'woocommerce'), 'load_billing' => __('Load the customer\'s billing information? This will remove any currently entered billing information.', 'woocommerce'), 'load_shipping' => __('Load the customer\'s shipping information? This will remove any currently entered shipping information.', 'woocommerce'), 'featured_label' => __('Featured', 'woocommerce'), 'prices_include_tax' => esc_attr(get_option('woocommerce_prices_include_tax')), 'round_at_subtotal' => esc_attr(get_option('woocommerce_tax_round_at_subtotal')), 'no_customer_selected' => __('No customer selected', 'woocommerce'), 'plugin_url' => WC()->plugin_url(), 'ajax_url' => admin_url('admin-ajax.php'), 'order_item_nonce' => wp_create_nonce('order-item'), 'add_attribute_nonce' => wp_create_nonce('add-attribute'), 'save_attributes_nonce' => wp_create_nonce('save-attributes'), 'calc_totals_nonce' => wp_create_nonce('calc-totals'), 'get_customer_details_nonce' => wp_create_nonce('get-customer-details'), 'search_products_nonce' => wp_create_nonce('search-products'), 'grant_access_nonce' => wp_create_nonce('grant-access'), 'revoke_access_nonce' => wp_create_nonce('revoke-access'), 'add_order_note_nonce' => wp_create_nonce('add-order-note'), 'delete_order_note_nonce' => wp_create_nonce('delete-order-note'), 'calendar_image' => WC()->plugin_url() . '/assets/images/calendar.png', 'post_id' => isset($post->ID) ? $post->ID : '', 'base_country' => WC()->countries->get_base_country(), 'currency_format_num_decimals' => wc_get_price_decimals(), 'currency_format_symbol' => get_woocommerce_currency_symbol(), 'currency_format_decimal_sep' => esc_attr(wc_get_price_decimal_separator()), 'currency_format_thousand_sep' => esc_attr(wc_get_price_thousand_separator()), 'currency_format' => esc_attr(str_replace(array('%1$s', '%2$s'), array('%s', '%v'), get_woocommerce_price_format())), 'rounding_precision' => WC_ROUNDING_PRECISION, 'tax_rounding_mode' => WC_TAX_ROUNDING_MODE, 'product_types' => array_map('sanitize_title', get_terms('product_type', array('hide_empty' => false, 'fields' => 'names'))), 'default_attribute_visibility' => apply_filters('default_attribute_visibility', false), 'default_attribute_variation' => apply_filters('default_attribute_variation', false), 'i18n_download_permission_fail' => __('Could not grant access - the user may already have permission for this file or billing email is not set. Ensure the billing email is set, and the order has been saved.', 'woocommerce'), 'i18n_permission_revoke' => __('Are you sure you want to revoke access to this download?', 'woocommerce'), 'i18n_tax_rate_already_exists' => __('You cannot add the same tax rate twice!', 'woocommerce'), 'i18n_product_type_alert' => __('Your product has variations! Before changing the product type, it is a good idea to delete the variations to avoid errors in the stock reports.', 'woocommerce'));
     wp_localize_script('wc-admin-meta-boxes', 'woocommerce_admin_meta_boxes', $params);
 }
    /**
     * Copy product Category Custom fields
     *
     * Copy the category custom fields from orginal category to its translations
     * when we start adding new category translation
     *
     * @return boolean false if this action must not be executed
     */
    public function copyProductCatCustomFields()
    {
        /* We sync custom fields only for translation */
        if (!(isset($_GET['from_tag']) && isset($_GET['new_lang']))) {
            return false;
        }
        $ID = esc_attr($_GET['from_tag']);
        $type = get_woocommerce_term_meta($ID, 'display_type', true);
        $thumbID = absint(get_woocommerce_term_meta($ID, 'thumbnail_id', true));
        $image = $thumbID ? wp_get_attachment_thumb_url($thumbID) : wc_placeholder_img_src();
        ?>
        <script type="text/javascript">
            jQuery('document').ready(function ($) {
                $('#display_type option[value="<?php 
        echo $type;
        ?>
"]')
                        .attr("selected", true);
                $('#product_cat_thumbnail img').attr('src', '<?php 
        echo $image;
        ?>
');
                $('#product_cat_thumbnail_id').val('<?php 
        echo $thumbID;
        ?>
');
        <?php 
        if ($thumbID) {
            ?>
                    $('.remove_image_button').show();
        <?php 
        }
        ?>
            });
        </script>
        <?php 
        /* Allow other plugins to check for category custom fields */
        do_action(HooksInterface::PRODUCT_COPY_CATEGORY_CUSTOM_FIELDS, $ID);
    }
 /**
  * Get category featured image
  *
  * @since 1.0.0
  * @param  string $size image size.
  * @return string
  */
 public function get_cat_image($size = 'full')
 {
     if (!function_exists('get_woocommerce_term_meta')) {
         return '';
     }
     $thumbnail_id = get_woocommerce_term_meta($this->object->term_id, 'thumbnail_id', true);
     $image = false;
     if ($thumbnail_id) {
         $image = wp_get_attachment_image_src($thumbnail_id, $size);
         $image = $image[0];
     } elseif (function_exists('wc_placeholder_img_src')) {
         $image = wc_placeholder_img_src();
     }
     if ($image) {
         // Prevent esc_url from breaking spaces in urls for image embeds
         // Ref: http://core.trac.wordpress.org/ticket/23605
         $image = str_replace(' ', '%20', $image);
         return sprintf('<img src="%1$s" alt="%2$s" />', esc_url($image), esc_attr($this->object->name));
     } else {
         return '';
     }
 }
 /**
  * get_template_image_file_info( $file )
  *
  * @access public
  * @since 3.8
  * @param $file string filename
  * @return PATH to the file
  */
 public static function get_template_image_file_info($file = '')
 {
     // If we're not looking for a file, do not proceed
     if (empty($file)) {
         return;
     }
     // Look for file in stylesheet
     $image_info = array();
     if (file_exists(get_stylesheet_directory() . '/images/' . $file)) {
         $file_url = get_stylesheet_directory_uri() . '/images/' . $file;
         list($current_width, $current_height) = getimagesize(get_stylesheet_directory() . '/images/' . $file);
         $image_info['url'] = $file_url;
         $image_info['width'] = $current_width;
         $image_info['height'] = $current_height;
         // Look for file in template
     } elseif (file_exists(get_template_directory() . '/images/' . $file)) {
         $file_url = get_template_directory_uri() . '/images/' . $file;
         list($current_width, $current_height) = getimagesize(get_template_directory() . '/images/' . $file);
         $image_info['url'] = $file_url;
         $image_info['width'] = $current_width;
         $image_info['height'] = $current_height;
         // Backwards compatibility
     } else {
         $woocommerce_db_version = get_option('woocommerce_db_version', null);
         $file_url = version_compare($woocommerce_db_version, '2.1', '<') ? woocommerce_placeholder_img_src() : wc_placeholder_img_src();
         list($current_width, $current_height) = getimagesize($file_url);
         $image_info['url'] = $file_url;
         $image_info['width'] = $current_width;
         $image_info['height'] = $current_height;
     }
     if (is_ssl()) {
         $file_url = str_replace('http://', 'https://', $file_url);
         $image_info['url'] = $file_url;
     }
     return $image_info;
 }
Esempio n. 17
0
    public function dhvc_woo_products_shortcode($atts, $content = null)
    {
        extract(shortcode_atts(array('id' => '', 'heading' => '', 'heading_color' => '#47A3DA', 'heading_font_size' => '20px', 'query_options' => '', 'query_type' => '1', 'products' => '', 'exclude_products' => '', 'category' => '', 'exclude_category' => '', 'brand' => '', 'exclude_brand' => '', 'tag' => '', 'exclude_tag' => '', 'attribute' => '', 'posts_per_page' => '6', 'post_per_row' => '2', 'show' => '', 'orderby' => 'date', 'order' => 'ASC', 'hide_free' => '', 'show_hidden' => '', 'style_options' => '', 'display' => 'grid', 'hide_result_count' => '', 'hide_ordering_list' => '', 'show_grid_pagination' => '', 'show_masonry_filter' => '1', 'masonry_filters_background' => '#ffffff', 'masonry_filters_selected_background' => '#47A3DA', 'masonry_filters_color' => '#666666', 'masonry_filters_selected_color' => '#ffffff', 'masonry_filters_border_color' => '#ffffff', 'masonry_filters_selected_border_color' => '#47A3DA', 'masonry_gutter' => 10, 'hide_carousel_arrows' => '1', 'show_carousel_pagination' => '', 'carousel_arrow_background' => '#CFCDCD', 'carousel_arrow_hover_background' => '#47A3DA', 'carousel_arrow_color' => '#ffffff', 'carousel_arrow_hover_color' => '#ffffff', 'carousel_arrow_size' => '24px', 'carousel_arrow_front_size' => '12px', 'carousel_arrow_border_radius' => '3px', 'carousel_pagination_background' => '#869791', 'carousel_pagination_active_background' => '#47A3DA', 'carousel_pagination_size' => '12px', 'item_border_style' => 'solid', 'item_border_color' => '#e1e1e1', 'item_border_width' => '1px', 'row_separator_color' => '#e1e1e1', 'row_separator_height' => '20px', 'row_separator_border_style' => 'solid', 'hide_thumbnail' => '1', 'thumbnail_background_color' => '#ffffff', 'thumbnail_border_style' => 'solid', 'thumbnail_border_color' => '#e1e1e1', 'thumbnail_border_width' => '1px', 'thumbnail_border_radius' => '3px', 'thumbnail_padding' => '', 'thumbnail_margin' => '', 'thumbnail_width' => '', 'thumbnail_height' => '', 'hide_title' => '1', 'title_align' => 'center', 'title_color' => '#47A3DA', 'title_hover_color' => '#98D2F7', 'title_font_size' => '14px', 'title_padding' => '', 'title_margin' => '', 'show_excerpt' => '', 'excerpt_length' => '15', 'excerpt_align' => '', 'excerpt_color' => '#333333', 'excerpt_font_size' => '12px', 'excerpt_padding' => '', 'excerpt_margin' => '', 'hide_price' => '1', 'price_color' => '#47A3DA', 'no_discount_price_color' => '#333333', 'price_font_size' => '14px', 'no_discount_price_font_size' => '12px', 'price_padding' => '', 'price_margin' => '', 'hide_addtocart' => '1', 'addtocart_text' => 'Add to cart', 'addtocart_color' => '', 'addtocart_font_size' => '14px', 'addtocart_padding' => '', 'addtocart_margin' => '', 'add_cart_price_style' => '2column', 'show_rating' => '1', 'show_sale_flash' => '1', 'el_class' => ''), $atts));
        $inline_style = '

#' . $id . ' .dhvc-woo-heading {
	color:' . $heading_color . ';
	font-size:' . $heading_font_size . ';
}
			
#' . $id . ' .dhvc-woo-item {
	border: ' . $item_border_width . ' ' . $item_border_style . ' ' . $item_border_color . ';
}
#' . $id . ' .dhvc-woo-separator{
	border-top-color:' . $row_separator_color . ';
	margin-top:' . absint($row_separator_height) / 2 . 'px;
	margin-bottom:' . absint($row_separator_height) / 2 . 'px;
	border-top-style:' . $row_separator_border_style . ';
}
#' . $id . ' .dhvc-woo-images{
	background-color:' . $thumbnail_background_color . ';	
}
#' . $id . ' .dhvc-woo-images img{
	border-style:' . $thumbnail_border_style . ';
	border-width:' . $thumbnail_border_width . ';
	border-color:' . $thumbnail_border_color . ';
	border-radius:' . $thumbnail_border_radius . ';
	-webkit-border-radius:' . $thumbnail_border_radius . ';
	padding:' . $thumbnail_padding . ';
	margin:' . $thumbnail_margin . ';
}
#' . $id . ' .dhvc-woo-title{
	text-align:' . $title_align . ';
	padding:' . $title_padding . ';
	margin:' . $title_margin . ';		
}		
#' . $id . ' .dhvc-woo-title a{
	color:' . $title_color . ';
	font-size:' . $title_font_size . ';
				
}
#' . $id . ' .dhvc-woo-title a:hover{
	color:' . $title_hover_color . '
}
#' . $id . ' .dhvc-woo-excerpt{
	text-align:' . $excerpt_align . ';
	color:' . $excerpt_color . ';
	font-size:' . $excerpt_font_size . ';
	padding:' . $excerpt_padding . ';
	margin:' . $excerpt_margin . ';
}
#' . $id . ' .dhvc-woo-price{
	padding:' . $price_padding . ';
	margin:' . $price_margin . ';			
}
#' . $id . ' .dhvc-woo-price .amount,
#' . $id . ' .dhvc-woo-price ins .amount{
	color:' . $price_color . ';
	font-size:' . $price_font_size . ';
	
}
#' . $id . ' .dhvc-woo-price del .amount{
	color:' . $no_discount_price_color . ';
	font-size:' . $no_discount_price_font_size . '
}
#' . $id . ' .dhvc-woo-addtocart a{
	padding:' . $addtocart_padding . ';
	margin:' . $addtocart_margin . ';
}

#' . $id . ' .dhvc-woo-masonry-list .dhvc-woo-masonry-item{
	margin-bottom:' . absint($masonry_gutter) . 'px;
}
#' . $id . ' .dhvc-woo-filters a {
	border-color:' . $masonry_filters_border_color . ';
    background-color:' . $masonry_filters_background . ';
    color:' . $masonry_filters_color . ';
    				
}
#' . $id . ' .dhvc-woo-filters a.selected,
#' . $id . ' .dhvc-woo-filters a:hover{
	background-color:' . $masonry_filters_selected_background . ';
	color:' . $masonry_filters_selected_color . ';
	border-color:' . $masonry_filters_selected_border_color . ';
}
#' . $id . ' .dhvc-woo-carousel-arrows a{
	background:' . $carousel_arrow_background . ';
	width:' . $carousel_arrow_size . ';
	height:' . $carousel_arrow_size . ';
	border-radius:' . $carousel_arrow_border_radius . ';
	-webkit-border-radius:' . $carousel_arrow_border_radius . ';
}
#' . $id . ' .dhvc-woo-carousel-arrows a:hover{
	background:' . $carousel_arrow_hover_background . ';
}	
#' . $id . ' .dhvc-woo-carousel-arrows a i{
	color:' . $carousel_arrow_color . ';
	font-size:' . $carousel_arrow_front_size . ';
}
#' . $id . ' .dhvc-woo-carousel-arrows a:hover i{
	color:' . $carousel_arrow_hover_color . ';
}						
#' . $id . ' .owl-controls .owl-page span{
	width:' . $carousel_pagination_size . ';
	height:' . $carousel_pagination_size . ';
	background:' . $carousel_pagination_background . ';
}
			
#' . $id . ' .owl-controls .owl-page.active span,
#' . $id . ' .owl-controls.clickable .owl-page:hover span{
	background:' . $carousel_pagination_active_background . ';
}
';
        if (defined('YITH_WCWL')) {
            $label = apply_filters('yith_wcwl_button_label', get_option('yith_wcwl_add_to_wishlist_text'));
            $br = apply_filters('yith-wcwl-browse-wishlist-label', __('Browse Wishlist', 'yit'));
            $inline_style .= '#' . $id . ' .dhvc-woo-images .add_to_wishlist:after{
	content:"' . $label . '";
}	
#' . $id . ' .dhvc-woo-images .yith-wcwl-wishlistexistsbrowse a:after,
#' . $id . ' .dhvc-woo-images .yith-wcwl-wishlistaddedbrowse a:after{
	content:"' . $br . '";
}
';
        }
        //wp_enqueue_style('dhvc-woo');
        global $woocommerce, $product, $wp_the_query;
        $posts_per_page = $posts_per_page;
        $show = sanitize_title($show);
        $orderby = sanitize_title($orderby);
        $order = sanitize_title($order);
        if (is_front_page()) {
            $paged = get_query_var('page') ? get_query_var('page') : 1;
        } else {
            $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        }
        $query_args = array('paged' => $paged, 'posts_per_page' => $posts_per_page, 'post_status' => 'publish', 'post_type' => 'product', 'offset' => 0, 'order' => $order == 'asc' ? 'ASC' : 'DESC');
        if ($query_type == '1') {
            if (!empty($products)) {
                $products_ids = explode(',', $products);
                $query_args['post__in'] = $products_ids;
            }
            if (!empty($exclude_products)) {
                $exclude_products_ids = explode(',', $exclude_products);
                $query_args[' post__not_in'] = $exclude_products_ids;
            }
            $categories = array();
            if (is_product()) {
                $cat_terms = get_the_terms($product->id, 'product_cat');
                if ($cat_terms) {
                    foreach ($cat_terms as $cat) {
                        $categories[] = $cat->term_id;
                    }
                }
            }
            if (!empty($category)) {
                $category = str_replace('-1', implode(',', $categories), $category);
                $query_args['tax_query'][] = array('taxonomy' => 'product_cat', 'field' => 'id', 'terms' => explode(',', $category), 'operator' => 'IN');
            }
            if (!empty($exclude_category)) {
                $exclude_category = str_replace('-1', implode(',', $categories), $exclude_category);
                $query_args['tax_query'][] = array('taxonomy' => 'product_cat', 'field' => 'id', 'terms' => explode(',', $exclude_category), 'operator' => 'NOT IN');
            }
            if (!empty($brand)) {
                $query_args['tax_query'][] = array('taxonomy' => 'product_brand', 'field' => 'id', 'terms' => explode(',', $brand), 'operator' => 'IN');
            }
            if (!empty($exclude_brand)) {
                $query_args['tax_query'][] = array('taxonomy' => 'product_brand', 'field' => 'id', 'terms' => explode(',', $exclude_brand), 'operator' => 'NOT IN');
            }
            if (!empty($tag)) {
                $query_args['tax_query'][] = array('taxonomy' => 'product_tag', 'field' => 'id', 'terms' => explode(',', $tag), 'operator' => 'IN');
            }
            if (!empty($exclude_tag)) {
                $query_args['tax_query'][] = array('taxonomy' => 'product_tag', 'field' => 'id', 'terms' => explode(',', $exclude_tag), 'operator' => 'NOT IN');
            }
            if (!empty($attribute)) {
                $attribute_arr = explode(',', $attribute);
                $t = array();
                foreach ($attribute_arr as $attr) {
                    $attr_arr = explode('|', $attr);
                    $t[$attr_arr[0]][] = $attr_arr[1];
                }
                if (!empty($t)) {
                    foreach ($t as $key => $tarr) {
                        $query_args['tax_query'][] = array('taxonomy' => $key, 'field' => 'slug', 'terms' => $tarr, 'operator' => 'IN');
                    }
                }
            }
        }
        if ($query_type == 'upsell') {
            $query_args = $this->_get_upsell_product($query_args);
            if (empty($query_args)) {
                return;
            }
        }
        if ($query_type == 'related') {
            $query_args = $this->_get_related_product($query_args);
            if (empty($query_args)) {
                return;
            }
        }
        if ($query_type == 'crosssell') {
            $query_args = $this->_get_crosssell_product($query_args);
            if (empty($query_args)) {
                return;
            }
        }
        $query_args['meta_query'] = array();
        if ($show_hidden == '0') {
            $query_args['meta_query'][] = array('key' => '_visibility', 'value' => array('visible', 'catalog'), 'compare' => 'IN');
            $query_args['post_parent'] = 0;
        }
        if (!empty($hide_free)) {
            $query_args['meta_query'][] = array('key' => '_price', 'value' => 0, 'compare' => '>', 'type' => 'DECIMAL');
        }
        $stock_status = array();
        if (get_option('woocommerce_hide_out_of_stock_items') == 'yes') {
            $stock_status = array('key' => '_stock_status', 'value' => 'instock', 'compare' => '=');
        }
        $query_args['meta_query'][] = $stock_status;
        $query_args['meta_query'] = array_filter($query_args['meta_query']);
        switch ($show) {
            case 'featured':
                $query_args['meta_query'][] = array('key' => '_featured', 'value' => 'yes');
                break;
            case 'onsale':
                $product_ids_on_sale = wc_get_product_ids_on_sale();
                $product_ids_on_sale[] = 0;
                $query_args['post__in'] = $product_ids_on_sale;
                break;
        }
        if (isset($_GET['orderby']) && !empty($_GET['orderby'])) {
            $orderby = sanitize_text_field($_GET['orderby']);
        }
        $query_args['order'] = $order;
        switch ($orderby) {
            case 'title':
                $query_args['orderby'] = 'title';
                break;
            case 'modified':
                $query_args['orderby'] = 'modified';
                break;
            case 'comment_count':
                $query_args['orderby'] = 'comment_count';
                break;
            case 'popularity':
                $args['meta_key'] = 'total_sales';
                // Sorting handled later though a hook
                add_filter('posts_clauses', array($woocommerce->query, 'order_by_popularity_post_clauses'));
                break;
            case 'rating':
                // Sorting handled later though a hook
                add_filter('posts_clauses', array($woocommerce->query, 'order_by_rating_post_clauses'));
                break;
            case 'date':
                $query_args['orderby'] = 'date';
                //$query_args['order']    = 'ASC' ? 'ASC' : 'DESC';
                break;
            case 'rand':
                $query_args['orderby'] = 'rand';
                break;
            case 'sales':
                $query_args['meta_key'] = 'total_sales';
                $query_args['orderby'] = 'meta_value_num';
                break;
            case 'price':
                $query_args['meta_key'] = '_price';
                $query_args['orderby'] = 'meta_value_num';
                $query_args['order'] = 'asc';
                break;
            case 'price-desc':
                $query_args['meta_key'] = '_price';
                $query_args['orderby'] = 'meta_value_num';
                $query_args['order'] = 'desc';
                break;
            default:
                $ordering_args = $woocommerce->query->get_catalog_ordering_args($orderby, $order);
                $query_args['orderby'] = $ordering_args['orderby'];
                //$query_args['order'] =$ordering_args['order'];
                break;
        }
        $query_args = apply_filters('dhvc_woo_query_args', $query_args, $atts, $content);
        $r = new WP_Query($query_args);
        $output = '';
        if (defined('WPB_VC_VERSION') && function_exists('vc_add_param')) {
            if (!dhvc_is_editor() && !dhvc_is_editor()) {
                //wp_add_inline_style('dhvc-woo',$inline_style);
                $output .= '<style type="text/css">' . $inline_style . '</style>';
            } else {
                $output .= '<style type="text/css">' . $inline_style . '</style>';
            }
        } else {
            //wp_add_inline_style('dhvc-woo',$inline_style);
            $output .= '<style type="text/css">' . $inline_style . '</style>';
        }
        // 		wp_enqueue_style('dhvc-woo-font-awesome');
        // 		wp_enqueue_style('dhvc-woo-chosen');
        // 		wp_enqueue_style('dhvc-woo');
        $output .= '<div id="' . $id . '" class="woocommerce dhvc-woo ' . $el_class . '">';
        if (!empty($heading)) {
            $output .= '<div class="dhvc-woo-heading">';
            $output .= $heading;
            $output .= '</div>';
        }
        if ($display == 'masonry' && $show_masonry_filter !== '0') {
            $output .= '<div class="dhvc-woo-filters dhvc-woo-clearfix">';
            $output .= '<ul data-option-key="filter">';
            $output .= '<li>';
            $output .= '<a class="dhvc-woo-filter selected" href="#" data-option-value="*">' . __('All', DHVC_WOO) . '</a>';
            $output .= '</li>';
            $product_cats = array();
            if ($r->have_posts()) {
                while ($r->have_posts()) {
                    $r->the_post();
                    global $product;
                    $cats = get_the_terms($product->id, 'product_cat');
                    if (!empty($cats)) {
                        foreach ($cats as $cat) {
                            $product_cats[$cat->term_id] = $cat->name;
                        }
                    }
                }
                foreach ($product_cats as $term_id => $name) {
                    $output .= '<li>';
                    $output .= '<a href="#" class="dhvc-woo-filter" data-option-value= ".dhvc-woo-cat-' . $term_id . '">' . $name . '</a>';
                    $output .= '</li>';
                }
                wp_reset_postdata();
                wp_reset_query();
            }
            $output .= '</ul>';
            $output .= '</div>';
        }
        if ($display == 'carousel' && $hide_carousel_arrows === '0' && $r->post_count > $post_per_row) {
            $output .= '<div class="dhvc-woo-carousel-arrows dhvc-woo-clearfix">';
            $output .= '<a href="#" class="dhvc-woo-carousel-prev"><i class="fa fa-chevron-left"></i></a>';
            $output .= '<a href="#" class="dhvc-woo-carousel-next"><i class="fa fa-chevron-right"></i></a>';
            $output .= '</div>';
        }
        if ($display != 'carousel' && $display != 'masonry') {
            if (empty($hide_result_count) || empty($hide_ordering_list)) {
                $output .= '<div class="dhvc-woo-row-fluid dhvc-woo-toolbar">';
                if (empty($hide_result_count)) {
                    ob_start();
                    dhvc_result_count($r);
                    $output .= ob_get_clean();
                }
                if (empty($hide_ordering_list)) {
                    ob_start();
                    dhvc_woo_orderby($orderby);
                    $output .= ob_get_clean();
                }
                $output .= '</div>';
            }
        }
        $output .= '<div class="dhvc-woo-row-fluid dhvc-woo-' . $display . '-list"' . ($display == 'masonry' ? ' data-masonry-gutter="' . absint($masonry_gutter) . '"' : '') . '' . ($display == 'carousel' ? ' data-items="' . absint($post_per_row) . '"' : '') . ($display == 'carousel' && !empty($show_carousel_pagination) ? ' data-pagination="true"' : '') . '>';
        if ($r->have_posts()) {
            $i = 0;
            while ($r->have_posts()) {
                $r->the_post();
                global $product, $post;
                $cats = get_the_terms($product->id, 'product_cat');
                $product_cats = array();
                if (!empty($cats)) {
                    foreach ($cats as $cat) {
                        $product_cats[] = 'dhvc-woo-cat-' . $cat->term_id;
                    }
                }
                if ($display == 'grid') {
                    if ($i++ % $post_per_row == 0) {
                        $output .= '<div class="dhvc-woo-row-fluid">';
                    }
                }
                $output .= '<div class="dhvc-woo-item';
                if ($display != 'carousel' && $display != 'list') {
                    $output .= ' dhvc-woo-span' . 12 / absint($post_per_row);
                }
                $output .= ' dhvc-woo-' . $display . '-item ' . implode(' ', $product_cats);
                $output .= '">';
                $output_image = '';
                if ($hide_thumbnail !== '0') {
                    $output_image .= '<div class="dhvc-woo-images">';
                    if (defined('YITH_WCWL')) {
                        $output_image .= do_shortcode('[yith_wcwl_add_to_wishlist]');
                    }
                    if ($show_sale_flash !== '0' && $product->is_on_sale()) {
                        ob_start();
                        woocommerce_show_product_loop_sale_flash();
                        $output_image .= ob_get_clean();
                    }
                    if (function_exists('dhwcpl_product_sale')) {
                        ob_start();
                        dhwcpl_product_sale();
                        dhwcpl_product_out_of_store();
                        dhwcpl_shop_loop_item();
                        $output_image .= ob_get_clean();
                    }
                    if (has_post_thumbnail()) {
                        $image_title = esc_attr(get_the_title(get_post_thumbnail_id()));
                        $image_link = esc_url(get_permalink());
                        $thumb_size = 'shop_catalog';
                        $thumbnail_image = get_the_post_thumbnail($post->ID, 'shop_catalog');
                        if (!empty($thumbnail_height) && !empty($thumbnail_width)) {
                            $thumb_size = $thumbnail_width . 'x' . $thumbnail_height;
                            $thumbnail_data = dhvc_woo_getImageBySize(array('post_id' => $product->id, 'thumb_size' => $thumb_size));
                            $thumbnail_image = $thumbnail_data['thumbnail'];
                        }
                        $output_image .= '<a href="' . $image_link . '" itemprop="image" title="' . $image_title . '" >' . $thumbnail_image . '</a>';
                    } else {
                        $output_image .= apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" title="%s"><img src="%s" alt="Placeholder" /></a>', esc_url(get_permalink()), $image_title, wc_placeholder_img_src()), $product->id);
                    }
                    $output_image .= '</div>';
                }
                $output .= apply_filters('dhvc_woo_images', $output_image, $product, $display);
                $output .= '<div class="dhvc-woo-info"';
                $image_config_size = absint($thumbnail_width);
                if (empty($image_config_size)) {
                    $shop_single_image_arr = wc_get_image_size('shop_single');
                    $image_config_size = $shop_single_image_arr['width'];
                }
                $image_config_size = $image_config_size + absint($thumbnail_border_width) + absint($thumbnail_border_width);
                if ($display == 'list') {
                    $output .= 'style="width: calc(100% - ' . $image_config_size . 'px);"';
                }
                $output .= '>';
                $output_title = '';
                if ($hide_title !== '0') {
                    $output_title .= '<h2 class="dhvc-woo-title dhvc-woo-clearfix">';
                    $output_title .= '<a href="' . get_permalink() . '">' . the_title('', '', false) . '</a>';
                    $output_title .= '</h2>';
                }
                $output .= apply_filters('dhvc_woo_title', $output_title, $product, $display);
                $output_excerpt = '';
                if (!empty($show_excerpt)) {
                    $output_excerpt .= '<div class="dhvc-woo-excerpt">';
                    $output_excerpt .= apply_filters('dhvc-woo-excerpt', wp_trim_words($post->post_excerpt, $excerpt_length), $post);
                    $output_excerpt .= '</div>';
                }
                $output .= apply_filters('dhvc_woo_excerpt', $output_excerpt, $product, $display);
                $output_rating = '';
                if ($show_rating !== '0') {
                    $output_rating .= '<div class="woocommerce dhvc-woo-rating dhvc-woo-clearfix">';
                    $rating = $product->get_average_rating();
                    $rating = absint($rating);
                    $rating_html = '<div class="star-rating" title="' . sprintf(__('Rated %s out of 5', 'woocommerce'), $rating) . '">';
                    $rating_html .= '<span style="width:' . $rating / 5 * 100 . '%"><strong class="rating">' . $rating . '</strong> ' . __('out of 5', 'woocommerce') . '</span>';
                    $rating_html .= '</div>';
                    $output_rating .= $rating_html;
                    $output_rating .= '</div>';
                }
                $output .= apply_filters('dhvc_woo_rating', $output_rating, $product, $display);
                $output .= '<div class="dhvc-woo-extra dhvc-woo-row-fluid">';
                if ($display == 'list') {
                    $output_price = '';
                    if ($hide_price !== '0') {
                        $output_price .= '<div class="dhvc-woo-price">';
                        $output_price .= $product->get_price_html();
                        $output_price .= '</div>';
                    }
                    $output .= apply_filters('dhvc_woo_price', $output_price, $product, $display);
                    $output_addtocart = '';
                    if ($hide_addtocart !== '0') {
                        $output_addtocart .= '<div class="dhvc-woo-addtocart">';
                        ob_start();
                        wc_get_template('loop/add-to-cart.php');
                        $add_to_cart = ob_get_clean();
                        $output_addtocart .= apply_filters('dhvc-woo-add-to-cart', $add_to_cart, $product);
                        $output_addtocart .= '</div>';
                    }
                    $output .= apply_filters('dhvc_woo_addtocart', $output_addtocart, $product, $display);
                } else {
                    //'add_cart_price_style'=>'2column',
                    if ($add_cart_price_style == '1column') {
                        $output_price = '';
                        if ($hide_price !== '0') {
                            $output_price .= '<div class="dhvc-woo-price dhvc-woo-span12">';
                            $output_price .= $product->get_price_html();
                            $output_price .= '</div>';
                        }
                        $output .= apply_filters('dhvc_woo_price', $output_price, $product, $display);
                        $output_addtocart = '';
                        if ($hide_addtocart !== '0') {
                            $output_addtocart .= '<div class="dhvc-woo-addtocart dhvc-woo-span12">';
                            ob_start();
                            wc_get_template('loop/add-to-cart.php');
                            $add_to_cart = ob_get_clean();
                            $output_addtocart .= apply_filters('dhvc-woo-add-to-cart', $add_to_cart, $product);
                            $output_addtocart .= '</div>';
                        }
                        $output .= apply_filters('dhvc_woo_addtocart', $output_addtocart, $product, $display);
                    } else {
                        $output_addtocart = '';
                        if ($hide_addtocart !== '0') {
                            $output_addtocart .= '<div class="dhvc-woo-addtocart dhvc-woo-span6">';
                            ob_start();
                            wc_get_template('loop/add-to-cart.php');
                            $add_to_cart = ob_get_clean();
                            $output_addtocart .= apply_filters('dhvc-woo-add-to-cart', $add_to_cart, $product);
                            $output_addtocart .= '</div>';
                        }
                        $output .= apply_filters('dhvc_woo_addtocart', $output_addtocart, $product, $display);
                        $output_price = '';
                        if ($hide_price !== '0') {
                            $output_price .= '<div class="dhvc-woo-price dhvc-woo-span6">';
                            $output_price .= $product->get_price_html();
                            $output_price .= '</div>';
                        }
                        $output .= apply_filters('dhvc_woo_price', $output_price, $product, $display);
                    }
                }
                $output .= '</div>';
                $output .= '</div>';
                $output .= '</div>';
                if ($display == 'grid') {
                    if ($i % $post_per_row == 0 || $i == $r->post_count) {
                        $output .= '</div>';
                        $output .= '<div class="dhvc-woo-separator"></div>';
                    }
                }
            }
        }
        $output .= '</div>';
        if (!empty($show_grid_pagination) && $display != 'carousel' && $display != 'masonry') {
            $pagination = dhvc_woo_pagination(array('echo' => false), $r);
            $output .= $pagination;
        }
        $output .= '</div>';
        wp_reset_postdata();
        wp_reset_query();
        return $output;
    }
 * @version     2.1.2
 */
if (!defined('ABSPATH')) {
    exit;
    // Exit if accessed directly
}
foreach ($items as $item_id => $item) {
    $_product = apply_filters('woocommerce_order_item_product', $order->get_product_from_item($item), $item);
    $item_meta = new WC_Order_Item_Meta($item['item_meta'], $_product);
    if (apply_filters('woocommerce_order_item_visible', true, $item)) {
        ?>
		<tr>
			<td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php 
        // Show title/image etc
        if ($show_image) {
            echo apply_filters('woocommerce_order_item_thumbnail', '<img src="' . ($_product->get_image_id() ? current(wp_get_attachment_image_src($_product->get_image_id(), 'thumbnail')) : wc_placeholder_img_src()) . '" alt="' . __('Product Image', 'woocommerce') . '" height="' . esc_attr($image_size[1]) . '" width="' . esc_attr($image_size[0]) . '" style="vertical-align:middle; margin-right: 10px;" />', $item);
        }
        // Product name
        echo apply_filters('woocommerce_order_item_name', $item['name'], $item);
        // SKU
        if ($show_sku && is_object($_product) && $_product->get_sku()) {
            echo ' (#' . $_product->get_sku() . ')';
        }
        // allow other plugins to add additional product information here
        do_action('woocommerce_order_item_meta_start', $item_id, $item, $order);
        //Added New For Add Location Start
        $cat_location = get_the_terms($_product->id, 'product_location');
        $cat_course_periods = get_the_terms($_product->id, 'course_periods');
        $loc_count = count($cat_location);
        if ($cat_location) {
            ?>
Esempio n. 19
0
	<div class="woocommerce_variable_attributes wc-metabox-content">
		<div class="data">
			<p class="form-row form-row-first upload_image">
				<a href="#" class="upload_image_button <?php 
if ($_thumbnail_id > 0) {
    echo 'remove';
}
?>
" rel="<?php 
echo esc_attr($variation_id);
?>
"><img src="<?php 
if (!empty($image)) {
    echo esc_attr($image);
} else {
    echo esc_attr(wc_placeholder_img_src());
}
?>
" /><input type="hidden" name="upload_image_id[<?php 
echo $loop;
?>
]" class="upload_image_id" value="<?php 
echo esc_attr($_thumbnail_id);
?>
" /></a>
			</p>
			<?php 
if (wc_product_sku_enabled()) {
    ?>
				<p class="sku form-row form-row-last">
					<label><?php 
 /**
  * Thumbnail column value added to category admin.
  *
  * @param string $columns
  * @param string $column
  * @param int $id
  * @return array
  */
 public function product_cat_column($columns, $column, $id)
 {
     if ('thumb' == $column) {
         $thumbnail_id = get_woocommerce_term_meta($id, 'thumbnail_id', true);
         if ($thumbnail_id) {
             $image = wp_get_attachment_thumb_url($thumbnail_id);
         } else {
             $image = wc_placeholder_img_src();
         }
         // Prevent esc_url from breaking spaces in urls for image embeds
         // Ref: http://core.trac.wordpress.org/ticket/23605
         $image = str_replace(' ', '%20', $image);
         $columns .= '<img src="' . esc_url($image) . '" alt="' . esc_attr__('Thumbnail', 'woocommerce') . '" class="wp-post-image" height="48" width="48" />';
     }
     return $columns;
 }
Esempio n. 21
0
        ) );

        $attachment_count = count( $product->get_gallery_attachment_ids() );

        if ( $attachment_count > 0 ) {
            $gallery = '[product-gallery]';
        }
        else {
            $gallery = '';
        }

        echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s"  data-rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image ), $post->ID );

    }   else {

        echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="%s" />', wc_placeholder_img_src(), __( 'Placeholder', 'yit' ) ), $post->ID );

    }
    ?>

	<?php do_action('woocommerce_product_thumbnails'); ?>

</div>

<script>

    /* -------------- *
     * Temporary fix! *
     * -------------- */

    jQuery(document).ready(function($){
/**
 * Prepare attachment for JavaScript.
 *
 * @access public
 * @param array $response
 * @return array
 */
function wc_prepare_attachment_for_js($response)
{
    if (isset($response['url']) && strstr($response['url'], 'woocommerce_uploads/')) {
        $response['full']['url'] = wc_placeholder_img_src();
        if (isset($response['sizes'])) {
            foreach ($response['sizes'] as $size => $value) {
                $response['sizes'][$size]['url'] = wc_placeholder_img_src();
            }
        }
    }
    return $response;
}
 /**
  * wcj_order_items_table.
  */
 function wcj_order_items_table($atts, $content = '')
 {
     $html = '';
     $the_order = $this->the_order;
     // Get columns
     $columns = explode('|', $atts['columns']);
     if (empty($columns)) {
         return '';
     }
     $columns_total_number = count($columns);
     // Check all possible args
     $columns_titles = '' == $atts['columns_titles'] ? array() : explode('|', $atts['columns_titles']);
     $columns_styles = '' == $atts['columns_styles'] ? array() : explode('|', $atts['columns_styles']);
     //if ( ! ( $columns_total_number === count( $columns_titles ) === count( $columns_styles ) ) ) return '';
     // The Items
     $the_items = $the_order->get_items();
     // Shipping as item
     if ('' != $atts['shipping_as_item'] && $the_order->get_total_shipping() > 0) {
         $name = str_replace('%shipping_method_name%', $the_order->get_shipping_method(), $atts['shipping_as_item']);
         $total_shipping_tax_excl = $the_order->get_total_shipping();
         $shipping_tax = $the_order->get_shipping_tax();
         $the_items = $this->add_item($the_items, array('name' => $name, 'qty' => 1, 'line_subtotal' => $total_shipping_tax_excl, 'line_total' => $total_shipping_tax_excl, 'line_tax' => $shipping_tax, 'line_subtotal_tax' => $shipping_tax));
     }
     // Discount as item
     if ('' != $atts['discount_as_item'] && $the_order->get_total_discount(true) > 0) {
         $name = $atts['discount_as_item'];
         $total_discount_tax_excl = $the_order->get_total_discount(true);
         $discount_tax = $the_order->get_total_discount(false) - $total_discount_tax_excl;
         if (false != ($the_tax = $this->wcj_order_get_cart_discount_tax())) {
             $total_discount_tax_excl -= $the_tax;
             $discount_tax += $the_tax;
         }
         $total_discount_tax_excl *= -1;
         $discount_tax *= -1;
         $the_items = $this->add_item($the_items, array('name' => $name, 'qty' => 1, 'line_subtotal' => $total_discount_tax_excl, 'line_total' => $total_discount_tax_excl, 'line_tax' => $discount_tax, 'line_subtotal_tax' => $discount_tax));
     }
     // Starting data[] by adding columns titles
     $data = array();
     foreach ($columns_titles as $column_title) {
         $data[0][] = $column_title;
     }
     // Items to data[]
     $item_counter = 0;
     foreach ($the_items as $item) {
         $item['is_custom'] = isset($item['is_custom']) ? true : false;
         $the_product = true === $item['is_custom'] ? null : $the_order->get_product_from_item($item);
         $item_counter++;
         // Columns
         foreach ($columns as $column) {
             switch ($column) {
                 case 'item_number':
                     $data[$item_counter][] = $item_counter;
                     break;
                 case 'item_name':
                     //$data[ $item_counter ][] = ( true === $item['is_custom'] ) ? $item['name'] : $the_product->get_title();
                     if (true === $item['is_custom']) {
                         $data[$item_counter][] = $item['name'];
                     } else {
                         $the_item_title = $the_product->get_title();
                         // Variation (if needed)
                         if ($the_product->is_type('variation') && !in_array('item_variation', $columns)) {
                             $the_item_title .= '<div style="font-size:smaller;">' . wc_get_formatted_variation($the_product->variation_data, true) . '</div>';
                         }
                         $data[$item_counter][] = $the_item_title;
                     }
                     break;
                 case 'item_variation':
                     $data[$item_counter][] = $the_product->is_type('variation') ? wc_get_formatted_variation($the_product->variation_data, true) : '';
                     break;
                 case 'item_thumbnail':
                     //$data[ $item_counter ][] = $the_product->get_image();
                     $image_id = true === $item['is_custom'] ? 0 : $the_product->get_image_id();
                     $image_src = 0 != $image_id ? wp_get_attachment_image_src($image_id) : wc_placeholder_img_src();
                     if (is_array($image_src)) {
                         $image_src = $image_src[0];
                     }
                     $maybe_width = 0 != $atts['item_image_width'] ? ' width="' . $atts['item_image_width'] . '"' : '';
                     $maybe_height = 0 != $atts['item_image_height'] ? ' height="' . $atts['item_image_height'] . '"' : '';
                     $data[$item_counter][] = '<img src="' . $image_src . '"' . $maybe_width . $maybe_height . '>';
                     break;
                 case 'item_sku':
                     $data[$item_counter][] = true === $item['is_custom'] ? '' : $the_product->get_sku();
                     break;
                 case 'item_quantity':
                     $data[$item_counter][] = $item['qty'];
                     break;
                 case 'item_total_tax_excl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_item_total($item, false, true), $atts);
                     break;
                 case 'item_total_tax_incl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_item_total($item, true, true), $atts);
                     break;
                 case 'item_subtotal_tax_excl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_item_subtotal($item, false, true), $atts);
                     break;
                 case 'item_subtotal_tax_incl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_item_subtotal($item, true, true), $atts);
                     break;
                 case 'item_tax':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_item_tax($item, true), $atts);
                     break;
                 case 'line_total_tax_excl':
                     $line_total_tax_excl = $the_order->get_line_total($item, false, true);
                     $line_total_tax_excl = apply_filters('wcj_line_total_tax_excl', $line_total_tax_excl, $the_order);
                     $data[$item_counter][] = $this->wcj_price_shortcode($line_total_tax_excl, $atts);
                     break;
                 case 'line_total_tax_incl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_line_total($item, true, true), $atts);
                     break;
                 case 'line_subtotal_tax_excl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_line_subtotal($item, false, true), $atts);
                     break;
                 case 'line_subtotal_tax_incl':
                     $data[$item_counter][] = $this->wcj_price_shortcode($the_order->get_line_subtotal($item, true, true), $atts);
                     break;
                 case 'line_tax':
                     $line_tax = $the_order->get_line_tax($item);
                     $line_tax = apply_filters('wcj_line_tax', $line_tax, $the_order);
                     $data[$item_counter][] = $this->wcj_price_shortcode($line_tax, $atts);
                     break;
                 case 'line_subtax':
                     $line_subtax = $the_order->get_line_subtotal($item, true, false) - $the_order->get_line_subtotal($item, false, false);
                     $data[$item_counter][] = $this->wcj_price_shortcode($line_subtax, $atts);
                     break;
                 case 'item_tax_percent':
                 case 'line_tax_percent':
                     $item_total = $the_order->get_item_total($item, false, false);
                     $item_tax_percent = 0 != $item_total ? $the_order->get_item_tax($item, false) / $item_total * 100 : 0;
                     $item_tax_percent = apply_filters('wcj_line_tax_percent', $item_tax_percent, $the_order);
                     $data[$item_counter][] = sprintf($atts['tax_percent_format'], $item_tax_percent);
                     /* $tax_labels = array();
                     			foreach ( $the_order->get_taxes() as $the_tax ) {
                     				$tax_labels[] = $the_tax['label'];
                     			}
                     			$data[ $item_counter ][] = implode( ', ', $tax_labels ); */
                     break;
                     /* case 'line_tax_percent':
                     			$line_total = $the_order->get_line_total( $item, false, true );
                     			$line_tax_percent = ( 0 != $line_total ) ? $the_order->get_line_tax( $item ) / $line_total * 100 : 0;
                     			$line_tax_percent = apply_filters( 'wcj_line_tax_percent', $line_tax_percent, $the_order );
                     			$data[ $item_counter ][] = sprintf( $atts['tax_percent_format'], $line_tax_percent );
                     			break; */
                 /* case 'line_tax_percent':
                 			$line_total = $the_order->get_line_total( $item, false, true );
                 			$line_tax_percent = ( 0 != $line_total ) ? $the_order->get_line_tax( $item ) / $line_total * 100 : 0;
                 			$line_tax_percent = apply_filters( 'wcj_line_tax_percent', $line_tax_percent, $the_order );
                 			$data[ $item_counter ][] = sprintf( $atts['tax_percent_format'], $line_tax_percent );
                 			break; */
                 default:
                     $data[$item_counter][] = '';
             }
         }
     }
     $html = wcj_get_table_html($data, array('table_class' => $atts['table_class'], 'table_heading_type' => 'horizontal', 'columns_classes' => array(), 'columns_styles' => $columns_styles));
     return $html;
 }
    ?>
">
		<?php 
    $i = 0;
    ?>
		<?php 
    foreach ((array) $lookbooks as $lookbook) {
        $i++;
        ?>
			<?php 
        $thumbnail_id = get_woocommerce_term_meta($lookbook->term_id, 'thumbnail_id', true);
        $thumbnail_align = $i % 2 == 0 ? 'right' : 'left';
        $small_title = get_woocommerce_term_meta($lookbook->term_id, 'small_title', true);
        $image = wp_get_attachment_url($thumbnail_id);
        if (empty($image)) {
            $image = wc_placeholder_img_src();
        }
        ?>
			<div id="lookbook_<?php 
        echo esc_attr($lookbook->term_id);
        ?>
" data-id="<?php 
        echo esc_attr($lookbook->term_id);
        ?>
" class="lookbook lookbook-<?php 
        echo esc_attr($thumbnail_align);
        ?>
 clearfix">
			<?php 
        if ($image) {
            ?>
Esempio n. 25
0
/**
 * add categories images
 */
function training_wpo_ib_add_form_fields()
{
    ?>
 	<div class="form-field">
		<label><?php 
    esc_html_e('Thumbnail', 'training');
    ?>
</label>
		<div id="ib_taxonomy_thumbnail" style="float: left; margin-right: 10px;"><img src="<?php 
    echo esc_url(wc_placeholder_img_src());
    ?>
" width="60px" height="60px" /></div>
		<div style="line-height: 60px;">
			<input type="hidden" id="ib_taxonomy_thumbnail_id" name="ib_taxonomy_thumbnail_id" />
			<button type="button" class="upload_image_button button"><?php 
    esc_html_e('Upload/Add image', 'training');
    ?>
</button>
			<button type="button" class="remove_image_button button"><?php 
    esc_html_e('Remove image', 'training');
    ?>
</button>
		</div>
		<script type="text/javascript">

			// Only show the "remove image" button when needed
			if ( ! jQuery( '#ib_taxonomy_thumbnail_id' ).val() ) {
				jQuery( '.remove_image_button' ).hide();
			}

			// Uploading files
			var file_frame;

			jQuery( document ).on( 'click', '.upload_image_button', function( event ) {

				event.preventDefault();

				// If the media frame already exists, reopen it.
				if ( file_frame ) {
					file_frame.open();
					return;
				}

				// Create the media frame.
				file_frame = wp.media.frames.downloadable_file = wp.media({
					title: '<?php 
    esc_html_e("Choose an image", 'training');
    ?>
',
					button: {
						text: '<?php 
    esc_html_e("Use image", 'training');
    ?>
'
					},
					multiple: false
				});

				// When an image is selected, run a callback.
				file_frame.on( 'select', function() {
					var attachment = file_frame.state().get( 'selection' ).first().toJSON();
					var url = attachment.sizes.thumbnail? attachment.sizes.thumbnail.url:attachment.sizes.full.url;
					jQuery( '#ib_taxonomy_thumbnail_id' ).val( attachment.id );
					jQuery( '#ib_taxonomy_thumbnail img' ).attr( 'src',  url );
					jQuery( '.remove_image_button' ).show();
				});

				// Finally, open the modal.
				file_frame.open();
			});

			jQuery( document ).on( 'click', '.remove_image_button', function() {
				jQuery( '#ib_taxonomy_thumbnail img' ).attr( 'src', '<?php 
    echo esc_js(wc_placeholder_img_src());
    ?>
' );
				jQuery( '#ib_taxonomy_thumbnail_id' ).val( '' );
				jQuery( '.remove_image_button' ).hide();
				return false;
			});

		</script>
		<div class="clear"></div>
	</div>
 	<?php 
}
/**
 * @deprecated
 */
function woocommerce_placeholder_img_src()
{
    return wc_placeholder_img_src();
}
 /**
  * Returns thumbnail if it exists, if not, returns the WC placeholder image
  * @param int $id
  * @return string
  */
 private function get_thumbnail($id)
 {
     if ($thumb_id = get_post_thumbnail_id($id)) {
         $image = wp_get_attachment_image_src($thumb_id, 'shop_thumbnail');
         return $image[0];
     }
     return wc_placeholder_img_src();
 }
 /**
  * Get the images for a product or product variation
  *
  * @since 2.1
  * @param WC_Product|WC_Product_Variation $product
  * @return array
  */
 private function get_images($product)
 {
     $images = $attachment_ids = array();
     if ($product->is_type('variation')) {
         if (has_post_thumbnail($product->get_variation_id())) {
             // Add variation image if set
             $attachment_ids[] = get_post_thumbnail_id($product->get_variation_id());
         } elseif (has_post_thumbnail($product->id)) {
             // Otherwise use the parent product featured image if set
             $attachment_ids[] = get_post_thumbnail_id($product->id);
         }
     } else {
         // Add featured image
         if (has_post_thumbnail($product->id)) {
             $attachment_ids[] = get_post_thumbnail_id($product->id);
         }
         // Add gallery images
         $attachment_ids = array_merge($attachment_ids, $product->get_gallery_attachment_ids());
     }
     // Build image data
     foreach ($attachment_ids as $position => $attachment_id) {
         $attachment_post = get_post($attachment_id);
         if (is_null($attachment_post)) {
             continue;
         }
         $attachment = wp_get_attachment_image_src($attachment_id, 'full');
         if (!is_array($attachment)) {
             continue;
         }
         $images[] = array('id' => (int) $attachment_id, 'created_at' => $this->server->format_datetime($attachment_post->post_date_gmt), 'updated_at' => $this->server->format_datetime($attachment_post->post_modified_gmt), 'src' => current($attachment), 'title' => get_the_title($attachment_id), 'alt' => get_post_meta($attachment_id, '_wp_attachment_image_alt', true), 'position' => (int) $position);
     }
     // Set a placeholder image if the product has no images set
     if (empty($images)) {
         $images[] = array('id' => 0, 'created_at' => $this->server->format_datetime(time()), 'updated_at' => $this->server->format_datetime(time()), 'src' => wc_placeholder_img_src(), 'title' => __('Placeholder', 'woocommerce'), 'alt' => __('Placeholder', 'woocommerce'), 'position' => 0);
     }
     return $images;
 }
Esempio n. 29
0
function sf_product_cat_edit_hero_image($term)
{
    $image = '';
    $hero_id = absint(get_woocommerce_term_meta($term->term_id, 'hero_id', true));
    if ($hero_id) {
        $image = wp_get_attachment_url($hero_id, 'medium');
    } else {
        $image = wc_placeholder_img_src();
    }
    ?>
    	<tr class="form-field">
			<th scope="row" valign="top"><label><?php 
    _e('Hero Image', 'swiftframework');
    ?>
</label></th>
			<td>
				<div id="product_cat_hero" style="float:left;margin-right:10px;"><img style="height: auto!important;" src="<?php 
    echo esc_url($image);
    ?>
" width="300px" height="300px" /></div>
				<div style="line-height:40px;">
					<input type="hidden" id="product_cat_hero_id" name="product_cat_hero_id" value="<?php 
    echo $hero_id;
    ?>
" />
					<button type="submit" class="upload_hero_button button"><?php 
    _e('Upload/Add image', 'swiftframework');
    ?>
</button>
					<button type="submit" class="remove_hero_button button"><?php 
    _e('Remove image', 'swiftframework');
    ?>
</button>
					<p><?php 
    _e('This image is used for the hero image on product category pages.', 'swiftframework');
    ?>
</p>
				</div>
				<script type="text/javascript">

					// Uploading files
					var file_frame_hero;

					jQuery(document).on( 'click', '.upload_hero_button', function( event ){

						event.preventDefault();

						// If the media frame already exists, reopen it.
						if ( file_frame_hero ) {
							file_frame_hero.open();
							return;
						}

						// Create the media frame.
						file_frame_hero = wp.media.frames.downloadable_file = wp.media({
							title: '<?php 
    _e('Choose an image', 'swiftframework');
    ?>
',
							button: {
								text: '<?php 
    _e('Use image', 'swiftframework');
    ?>
',
							},
							multiple: false
						});

						// When an image is selected, run a callback.
						file_frame_hero.on( 'select', function() {
							attachment = file_frame_hero.state().get('selection').first().toJSON();

							jQuery('#product_cat_hero_id').val( attachment.id );
							jQuery('#product_cat_hero img').attr('src', attachment.url );
							jQuery('.remove_hero_button').show();
						});

						// Finally, open the modal.
						file_frame_hero.open();
					});

					jQuery(document).on( 'click', '.remove_hero_button', function( event ){
						jQuery('#product_cat_hero img').attr('src', '<?php 
    echo wc_placeholder_img_src();
    ?>
');
						jQuery('#product_cat_hero_id').val('');
						jQuery('.remove_hero_button').hide();
						return false;
					});

				</script>
				<div class="clear"></div>
			</td>
		</tr>
    <?php 
}
                    continue;
                }
                $loop++;
                printf('<div class="back-image back">%s</div>', wp_get_attachment_image($attachment_id, 'shop_catalog'));
                if ($loop == 1) {
                    break;
                }
            }
        }
        ?>
		<?php 
    }
    ?>
		<?php 
} else {
    echo '<img src="' . wc_placeholder_img_src() . '"/>';
}
?>

		 <?php 
if (!$flatsome_opt['disable_quick_view']) {
    ?>
          <div class="quick-view" data-prod="<?php 
    echo $post->ID;
    ?>
"><?php 
    _e('Quick View', 'flatsome');
    ?>
</div>
	   	 <?php 
}