Sindbad~EG File Manager
<?php
add_shortcode('mesmerize_display_woocommerce_items', 'mesmerize_display_woocommerce_items');
$mesmerize_display_woocommerce_items_class = array();
function mesmerize_display_woocommerce_items($atts)
{
$default_columns_tablet = 12 / intval(get_theme_mod('woocommerce_list_item_tablet_cols', 2));
$atts = shortcode_atts(array(
'id' => '',
'products_number' => '4',
'filter' => 'all',
'columns' => '3',
'columns_tablet' => $default_columns_tablet,
'columns_mobile' => '12',
'order' => 'DESC',
'order_by' => 'date',
'categories' => '',
'tags' => '',
'products' => '',
'custom' => "false",
'class' => '',
'template_slug' => 'content',
// 'template_slug' => 'pro/template-parts/woo-shadowed',
), $atts);
$content = "";
$query_args = array();
if ( ! class_exists('WooCommerce')) {
return mesmerize_placeholder_p(__('This element needs the WooCommerce plugin to be installed' , 'mesmerize') );
} else {
if (json_decode($atts['custom'])) {
$atts['custom'] = true;
if (empty($atts['products']) || $atts['products'] === 'null') {
return mesmerize_placeholder_p(__('Select some products to be displayed here' , 'mesmerize')) ;
} else {
$query_args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => -1,
'meta_query' => WC()->query->get_meta_query(),
'tax_query' => WC()->query->get_tax_query(),
);
$query_args['post__in'] = array_map('trim', explode(',', $atts['products']));
}
} else {
$atts['custom'] = false;
$query_args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => intval($atts['products_number']),
'order' => $atts['order'],
'meta_query' => WC()->query->get_meta_query(),
'tax_query' => WC()->query->get_tax_query(),
);
switch (strtolower($atts['order_by'])) {
case 'price' :
$query_args['meta_key'] = '_price';
$query_args['orderby'] = 'meta_value_num';
break;
case 'random' :
$query_args['orderby'] = 'rand';
break;
case 'sales' :
$query_args['meta_key'] = 'total_sales';
$query_args['orderby'] = 'meta_value_num';
break;
case 'rating' :
$query_args['meta_key'] = '_wc_average_rating';
$query_args['orderby'] = 'meta_value_num';
break;
default :
$query_args['orderby'] = 'date';
}
if ($atts['categories'] && ! empty($atts['categories']) && $atts['categories'] !== 'null') {
$query_args = mesmerize_woocommerce_query_maybe_add_category_args($query_args, $atts['categories']);
}
if ($atts['tags'] && ! empty($atts['tags']) && $atts['tags'] !== 'null') {
$query_args = mesmerize_woocommerce_query_maybe_add_tags_args($query_args, $atts['tags']);
}
if ($atts['filter'] == "onsale") {
$product_ids_on_sale = wc_get_product_ids_on_sale();
$product_ids_on_sale[] = 0;
$query_args['post__in'] = $product_ids_on_sale;
}
if ($atts['filter'] == "featured") {
$product_visibility_term_ids = wc_get_product_visibility_term_ids();
$query_args['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'term_taxonomy_id',
'terms' => $product_visibility_term_ids['featured'],
);
}
}
}
$content = mesmerize_woocommerce_items_do_query($query_args, $atts, 'products');
return $content;
}
function mesmerize_woocommerce_items_do_query_post_classes_filter($classes)
{
$atts = isset($GLOBALS['mesmerize_woocommerce_items_do_query_atts']) ? $GLOBALS['mesmerize_woocommerce_items_do_query_atts'] : false;
if ( ! ($atts)) {
return $classes;
}
$width = $atts['columns'];
$width_tablet = $atts['columns_tablet'];
$mobile_width = $atts['columns_mobile'];
$classes[] = "col-md-{$width}";
$classes[] = "col-sm-{$width_tablet}";
$classes[] = "col-xs-{$mobile_width}";
$classes[] = "in-page-section";
return $classes;
}
function mesmerize_woocommerce_archive_item_class_in_page($classes)
{
$atts = isset($GLOBALS['mesmerize_woocommerce_items_do_query_atts']) ? $GLOBALS['mesmerize_woocommerce_items_do_query_atts'] : false;
if ( ! ($atts)) {
return $classes;
}
$classes = $classes + explode(' ', $atts['class']);
return $classes;
}
function mesmerize_woocommerce_items_do_query($query_args, $atts, $loop_name)
{
$products = new WP_Query($query_args);
// sort as added in the list
if ($atts['custom'] === true) {
$ids = $query_args['post__in'];
usort($products->posts, function ($a, $b) use ($ids) {
$apos = array_search($a->ID, $ids);
$bpos = array_search($b->ID, $ids);
return ($apos < $bpos) ? -1 : 1;
});
}
ob_start();
$GLOBALS['mesmerize_woocommerce_items_do_query_atts'] = $atts;
add_filter('mesmerize_woocommerce_archive_item_class', 'mesmerize_woocommerce_archive_item_class_in_page');
add_filter('post_class', 'mesmerize_woocommerce_items_do_query_post_classes_filter');
$templateSlug = $atts['template_slug'];
if ($products->have_posts()) {
do_action("woocommerce_shortcode_before_{$loop_name}_loop", $atts); ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ($products->have_posts()) : $products->the_post(); ?>
<?php wc_get_template_part($templateSlug, 'product'); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php do_action("woocommerce_shortcode_after_{$loop_name}_loop", $atts); ?>
<?php
} else {
echo mesmerize_placeholder_p(__('No products to display', 'mesmerize'));
}
woocommerce_reset_loop();
wp_reset_postdata();
remove_filter('post_class', 'mesmerize_woocommerce_items_do_query_post_classes_filter');
$GLOBALS['mesmerize_woocommerce_items_do_query_atts'] = false;
return '<div class="woocommerce in-section">' . ob_get_clean() . '</div>';
}
add_shortcode('mesmerize_woocommerce_shop_url', 'mesmerize_woocommerce_shop_url');
function mesmerize_woocommerce_shop_url()
{
if ( ! function_exists('wc_get_page_permalink')) {
return '#';
}
$shop_page_url = wc_get_page_permalink('shop');
return $shop_page_url;
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists