true), 'objects'); $options = ['' => '']; foreach ($post_types as $post_type) { $options[$post_type->name] = $post_type->label; } return apply_filters('lae_post_type_options', $options); } /** * Action to handle searching taxonomy terms. */ function lae_get_all_taxonomy_options() { global $wpdb; $results = array(); $limit = apply_filters('lae_taxonomy_terms_dropdown_limit', 500); foreach ($wpdb->get_results(" SELECT terms.slug AS 'slug', terms.name AS 'label', termtaxonomy.taxonomy AS 'type' FROM $wpdb->terms AS terms JOIN $wpdb->term_taxonomy AS termtaxonomy ON terms.term_id = termtaxonomy.term_id LIMIT $limit ") as $result) { $results[$result->type . ':' . $result->slug] = $result->type . ':' . $result->label; } return apply_filters('lae_taxonomy_options', $results); } function lae_build_query_args($settings) { $query_args = [ 'orderby' => $settings['orderby'], 'order' => $settings['order'], 'ignore_sticky_posts' => 1, 'post_status' => 'publish', ]; if (!empty($settings['post_in'])) { $query_args['post_type'] = 'any'; $query_args['post__in'] = explode(',', $settings['post_in']); $query_args['post__in'] = array_map('intval', $query_args['post__in']); } else { if (!empty($settings['post_types'])) { $query_args['post_type'] = $settings['post_types']; } if (!empty($settings['tax_query'])) { $tax_queries = $settings['tax_query']; $query_args['tax_query'] = array(); $query_args['tax_query']['relation'] = 'OR'; foreach ($tax_queries as $tq) { list($tax, $term) = explode(':', $tq); if (empty($tax) || empty($term)) continue; $query_args['tax_query'][] = array( 'taxonomy' => $tax, 'field' => 'slug', 'terms' => $term ); } } } $query_args['posts_per_page'] = $settings['posts_per_page']; $query_args['paged'] = max(1, get_query_var('paged'), get_query_var('page')); return apply_filters('lae_posts_query_args', $query_args, $settings); }