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(); } }
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; } } }
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']); }
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; } } }
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 . '" />'; } }
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) . '" />'; } }
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) . '"/>'; } }
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…', 'enhanced select', 'woocommerce'), 'i18n_searching' => _x('Searching…', '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; }
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) { ?>
<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; }
) ); $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) { ?>
/** * 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; }
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 }