<?php
// Custom WP Query
include_once 'class-mc-query-shortcode.php';
// Wishlist
include_once 'wishlist.php';
// Compare
include_once 'compare.php';
#-----------------------------------------------------------------
# Shortcodes using [query] calss
#-----------------------------------------------------------------
// [blog] shortcode
//................................................................
if ( ! function_exists( 'blog_query' ) ) :
function blog_query($args = null, $content = null) {
// default template
if ( ! isset( $args['template'] ) || empty( $args['template'] ) ) {
$args['template'] = 'blog-sidebar-right';
}
// default Style
if ( ! isset( $args['blog_style'] ) || empty( $args['blog_style'] ) ) {
$args['blog_style'] = 'normal';
}
$args[ 'template' ] .= '.php';
return custom_wp_query( $args, $content, true );
}
add_shortcode('blog', 'blog_query');
endif;
// [shop] shortcode
//................................................................
if ( ! function_exists( 'shop_query' ) ) :
function shop_query($args = null, $content = null) {
if( class_exists( 'WooCommerce' ) ) {
$catalog_ordering_args = WC()->query->get_catalog_ordering_args();
if( $args == null ){
$args = array();
}
if( is_array( $args ) ){
$args = array_merge( $args, $catalog_ordering_args );
}
}
// default layout
if ( ! isset( $args['layout'] ) || empty( $args['layout'] ) ) {
$args['layout'] = 'left-sidebar';
}
// post type
if ( ! isset( $args['post_type'] ) || empty( $args['post_type'] ) ) {
$args['post_type'] = 'product';
}
// orderby
if ( ! isset( $args['orderby'] ) || empty( $args['orderby'] ) ) {
$args['orderby'] = 'menu_order'; // default by sort order
}
if ( ! isset( $args['order'] ) || empty( $args['order'] ) ) {
$args['order'] = 'ASC'; // default order
}
// categories
if ( isset( $args['category'] ) ) {
$args['taxonomy_slug'] = 'product_category';
unset( $args['category'] );
}
if( ! isset( $args[ 'columns' ] ) ) {
$args[ 'columns' ] = 3;
}
$args[ 'template' ] = 'archive-product.php';
if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '3.3', '<' ) ) {
global $woocommerce_loop;
$woocommerce_loop['columns'] = $args[ 'columns' ];
} else {
wc_set_loop_prop( 'columns', $args[ 'columns' ] );
}
return custom_wp_query( $args, $content, true );
}
add_shortcode('shop', 'shop_query');
endif;
if ( ! function_exists( 'mc_vc_terms' ) ) :
function mc_vc_terms( $atts, $content = null ){
$atts = shortcode_atts( array(
'taxonomy' => 'category',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 0,
'include' => '',
'exclude' => '',
'number' => 0,
'offset' => 0,
'name' => '',
'slug' => '',
'hierarchical' => true,
'child_of' => 0,
'parent' => '',
'include_parent' => 1,
), $atts, 'mc_terms' );
// Unset empty optional args
$optional_args = array( 'include', 'exclude', 'name', 'slug', 'parent' );
foreach( $optional_args as $optional_arg ) {
if ( empty ( $atts[ $optional_arg ] ) ) {
unset( $atts[ $optional_arg ] );
}
}
// Check for comma separated and convert into arrays
$comma_separated_args = array( 'taxonomy', 'include', 'exclude', 'name', 'slug' );
foreach ( $comma_separated_args as $comma_separated_arg ) {
if ( !empty( $atts[ $comma_separated_arg ] ) ) {
$atts[$comma_separated_arg] = explode( ',', $atts[$comma_separated_arg] );
}
}
//Cast int or number
$int_args = array( 'hide_empty', 'number', 'offset', 'hierarchical', 'child_of', 'include_parent', 'parent' );
foreach ( $int_args as $int_arg ) {
if ( !empty( $atts[ $int_arg ] ) ) {
$atts[ $int_arg ] = (int) $atts[ $int_arg ];
}
}
$terms = get_terms( $atts );
$html = '';
if ( ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
$html .= '<li><a href="' . esc_url( get_term_link( $term ) ) . '">' . esc_html( $term->name ) . '</a></li>';
}
if ( $atts['include_parent'] && $atts['child_of'] ) {
$parent_term = get_term( $atts['child_of'] );
if ( ! is_wp_error( $parent_term ) ) {
$parent_term_item = '<h3><a href="' . esc_url( get_term_link( $parent_term ) ) . '">' . $parent_term->name . '</a></h3>';
$html = $parent_term_item . $html;
}
}
}
if ( ! empty( $html ) ) {
$html = '<ul>' . $html . '</ul>';
}
return $html;
}
add_shortcode( 'mc_terms' , 'mc_vc_terms' );
endif;