Featured in: Create Shortcut Arguments for Display Posts Shortcode
| <?php | |
| /** | |
| * Industry and Product Category parameters on Display Posts Shortcode | |
| * @author Bill Erickson | |
| * @link http://www.billerickson.net/shortcut-args-for-display-posts-shortcode | |
| * | |
| * @param array $args, WP Query arguments | |
| * @param array $atts, shortcode arguments | |
| * @return array $args | |
| */ | |
| function be_dps_industry_and_category( $args, $atts ) { | |
| // If neither of my custom parameters are in use, return the $args (no modifications necessary) | |
| if( ! ( isset( $atts['industry'] ) || isset( $atts['product_cat'] ) ) ) | |
| return $args; | |
| // Set up a tax query, using the existing tax query if there is one | |
| $tax_query = isset( $args['tax_query'] ) ? $args['tax_query'] : array(); | |
| // If they specified an industry, include that in the tax query | |
| if( isset( $atts['industry'] ) ) { | |
| $tax_query[] = array( | |
| 'taxonomy' => 'product-industry', | |
| 'field' => 'slug', | |
| 'terms' => explode( ', ', $atts['industry'] ), | |
| ); | |
| } | |
| // If they specified a product category, include that in the tax query | |
| if( isset( $atts['product_cat'] ) ) { | |
| $tax_query[] = array( | |
| 'taxonomy' => 'product-category', | |
| 'field' => 'slug', | |
| 'terms' => explode( ', ', $atts['product_cat'] ), | |
| ); | |
| } | |
| // For Multiple tax queries, ensure results match both queries | |
| if( 1 < count( $tax_query ) && !isset( $tax_query['relation'] ) ) | |
| $tax_query['relation'] = 'AND'; | |
| $args['tax_query'] = $tax_query; | |
| // Set the post type to 'products' | |
| $args['post_type'] = 'products'; | |
| return $args; | |
| } | |
| add_filter( 'display_posts_shortcode_args', 'be_dps_industry_and_category', 10, 2 ); |