get_taxonomies( $post_type ); $tax_list = array(); foreach ( $the_taxs as $tax_name => $tax ) { if( ( $hierarchical && $tax->hierarchical ) || ( ! $hierarchical && ! $tax->hierarchical ) ) $tax_list[ $tax_name ] = $tax->label; } return $tax_list; } public function get_custom_post_types(){ $custom_post_types = get_post_types( array( '_builtin' => false ), 'objects' ); return apply_filters( 'masterslider_get_custom_post_types', $custom_post_types ); } public function get_default_post_types(){ return get_post_types( array( '_builtin' => true ), 'objects' ); } public function get_taxonomies( $post ){ $custom_post_type_taxonomies = get_object_taxonomies( $post, 'objects' ); return apply_filters( 'masterslider_get_custom_post_type_taxonomies', $custom_post_type_taxonomies, $post ); } public function get_terms( $taxonomies ){ $terms = get_terms( $taxonomies ); return apply_filters( 'masterslider_get_custom_post_type_terms', $terms, $taxonomies ); } public function get_tax_terms( $taxonomies ) { $taxs_terms_list = array(); foreach ( $taxonomies as $tax_name => $tax_label ) { $tax_terms = $this->get_terms( $tax_name ); foreach ( $tax_terms as $tax_term ) { if ( is_object( $tax_term ) ) $tax_term = get_object_vars( $tax_term ); $taxs_terms_list[] = $tax_term; } } return $taxs_terms_list; } public function get_posts_query(){ $query = array(); $query['image_from'] = isset( $_REQUEST['slideImage'] ) ? $_REQUEST['slideImage'] : 'auto'; $query['excerpt_length'] = isset( $_REQUEST['excerpt_length'] ) ? $_REQUEST['excerpt_length'] : 100; $query['exclude_post_no_image'] = isset( $_REQUEST['exclude_post_no_image'] ) ? $_REQUEST['exclude_post_no_image'] : false; if( isset( $_REQUEST['post_type'] ) && ! empty( $_REQUEST['post_type'] ) ) $query['post_type'] = $_REQUEST['post_type']; if( isset( $_REQUEST['orderby'] ) ) $query['orderby'] = $_REQUEST['orderby']; if( isset( $_REQUEST['order'] ) ) $query['order'] = $_REQUEST['order']; $query['posts_per_page'] = isset( $_REQUEST['limit'] ) && ! empty( $_REQUEST['limit'] ) ? (int)$_REQUEST['limit'] : 10; if( isset( $_REQUEST['post__not_in'] ) && ! empty( $_REQUEST['post__not_in'] ) ) { $posts_not_in = explode( ',', $_REQUEST['post__not_in'] ); $query['post__not_in'] = array_filter( $posts_not_in ); } if( isset( $_REQUEST['post__in'] ) && ! empty( $_REQUEST['post__in'] ) ) { $posts_in = explode( ',', $_REQUEST['post__in'] ); $query['post__in'] = array_filter( $posts_in ); } if( isset( $_REQUEST['offset'] ) && ! empty( $_REQUEST['offset'] ) ) $query['offset'] = (int)$_REQUEST['offset']; $taxs_data = array(); if( isset( $_REQUEST['cats'] ) && ! empty( $_REQUEST['cats'] ) ) { $cats = explode( ',', $_REQUEST['cats'] ); $taxs_data = array_merge( $taxs_data, $cats ); } if( isset( $_REQUEST['tags'] ) && ! empty( $_REQUEST['tags'] ) ) { $tags = explode( ',', $_REQUEST['tags'] ); $taxs_data = array_merge( $taxs_data, $tags ); } $query['tax_query'] = $this->get_tax_query( $taxs_data ); $this->recent_query = $query; return $query; } // this method will be called by ajax handler public function parse_and_get_posts_result(){ $query = $this->get_posts_query(); return $this->get_posts_result( $query ); } // this method will be called by ajax handler public function parse_and_get_first_post_object(){ $query = $this->get_posts_query(); $objects = $this->get_post_object( $query, 1 ); return isset( $objects[0] ) ? $objects[0] : null; } public function get_first_post_template_tags_value(){ $post = $this->parse_and_get_first_post_object(); $args = array(); $args['image_from'] = isset( $_REQUEST['slideImage'] ) ? $_REQUEST['slideImage'] : 'auto'; return get_post_template_tags_value( $post, $args ); } protected function get_post_object( $args, $count = -1 ){ $th_wp_query = $this->get_query_results( $args ); $object_list = array(); if( $th_wp_query->have_posts() ) : while ( $th_wp_query->have_posts() ) : $th_wp_query->the_post(); if( 0 === $count ) break; $object_list[] = $th_wp_query->post; --$count; endwhile; endif; return $object_list; } /** * Generate a tax_query for using in WP_Query by tax_terms_ids * @param array $taxs_term_ids The taxonomy_term id * @return array The tax query */ public function get_tax_query( $taxs_term_ids ){ $tax_query = array(); $taxs_term_ids = array_filter( $taxs_term_ids ); // collect terms ids for each taxonomy $tax_term_archive = array(); foreach ( $taxs_term_ids as $tax_id ) { if( $the_tax_term_obj = $this->get_taxonomy_by_id( $tax_id ) ) $tax_term_archive[ $the_tax_term_obj->taxonomy ][] = $the_tax_term_obj->term_id; } // generate tax_query foreach ( $tax_term_archive as $taxonomy => $terms) { $tax_query[] = array( 'taxonomy' => $taxonomy, 'field' => 'id', 'terms' => $terms ); } // add relationship between each inner taxonomy array when there is more than one if( count( $tax_query ) > 1 ) $tax_query['relation'] = 'AND'; return $tax_query; } public function get_taxonomy_by_id( $term_taxonomy_id ) { global $wpdb; $taxonomy = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->term_taxonomy wta INNER JOIN $wpdb->terms wt ON (wta.term_id = wt.term_id) WHERE wta.term_taxonomy_id = %d", $term_taxonomy_id ) ); return $taxonomy; } public function get_posts_result( $args ){ $slide_image_target = isset( $args['image_from'] ) ? $args['image_from'] : 'auto'; $th_wp_query = $this->get_query_results( $args ); ob_start(); if( $th_wp_query->have_posts() ): while ( $th_wp_query->have_posts() ) : $th_wp_query->the_post(); $the_excerpt = get_the_excerpt(); $excerpt_length = isset( $args['excerpt_length'] ) ? $args['excerpt_length'] : ''; if( ! empty( $excerpt_length ) ) $the_excerpt = msp_get_trimmed_string( get_the_excerpt(), (int)$excerpt_length ); $the_media = ''; $the_media_src = msp_get_auto_post_thumbnail_url( $th_wp_query->post->ID, $slide_image_target ); if( ! empty( $the_media_src ) ) { $the_media_tag = msp_get_the_resized_image( $the_media_src, 80, 80, true, 100 ); $the_media = sprintf( '
%s
', get_the_permalink(), $the_media_tag ); } ?>

( Post ID: )

'menu_order date', 'order' => 'DESC', 'post_status' => 'publish', 'posts_per_page'=> -1, 'offset' => 0 ); $args = wp_parse_args( $args, $defaults ); $th_wp_query = null; return new WP_Query( $args ); } } endif;