EWD_UFAQ_FAQ_POST_TYPE, 'post_status' => 'publish', 'posts_per_page' => -1, 'order' => 'DESC', 'paged' => 1, ); $this->args = wp_parse_args( $args, $defaults ); $this->context = $context; } /** * Parse the args array and convert custom arguments * for use by WP_Query * * @since 2.0.0 */ public function prepare_args() { global $ewd_ufaq_controller; $args = $this->args; $args['include_children'] = ( ! empty( $args['include_children'] ) and strtolower( $args['include_children'] ) != 'yes' ) ? false : true; if ( ! empty( $args['search_string'] ) ) { $args['s'] = $args['search_string']; } if ( ! empty( $args['post_count'] ) ) { $args['posts_per_page'] = $args['post_count']; } if ( ! empty( $args['faq_page'] ) ) { $args['paged'] = $args['faq_page']; } if ( ! empty( $args['post__in'] ) ) { $args['post__in'] = is_array( $args['post__in'] ) ? $args['post__in'] : json_decode( str_replace( array( '[', ']' ), array( '[', ']' ) ) ); } if ( ! empty( $args['post__in_string'] ) ) { $args['post__in'] = ! empty( $args['post__in'] ) ? array_merge( $args['post__in'], explode( ',', $args['post__in_string'] ) ) : explode( ',', $args['post__in_string'] ); } $tax_query = array(); if ( ! empty( $args['include_category'] ) ) { $include_category_array = explode( ',', $args['include_category'] ); $tax_query[] = array( 'taxonomy' => EWD_UFAQ_FAQ_CATEGORY_TAXONOMY, 'field' => 'slug', 'terms' => $include_category_array, 'include_children' => $args['include_children'] ); } if ( ! empty( $args['exclude_category'] ) ) { $exclude_category_array = explode( ',', $args['exclude_category'] ); $tax_query[] = array( 'taxonomy' => EWD_UFAQ_FAQ_CATEGORY_TAXONOMY, 'field' => 'slug', 'operator' => 'NOT IN', 'terms' => $exclude_category_array, 'include_children' => $args['include_children'] ); } if ( ! empty( $args['include_category_ids'] ) ) { $include_category_ids_array = explode( ',', $args['include_category_ids'] ); $tax_query[] = array( 'taxonomy' => EWD_UFAQ_FAQ_CATEGORY_TAXONOMY, 'field' => 'term_id', 'terms' => $include_category_ids_array, 'include_children' => $args['include_children'] ); } if ( ! empty( $args['exclude_category_ids'] ) ) { $exclude_category_ids_array = explode( ',', $args['exclude_category_ids'] ); $tax_query[] = array( 'taxonomy' => EWD_UFAQ_FAQ_CATEGORY_TAXONOMY, 'field' => 'term_id', 'operator' => 'NOT IN', 'terms' => $exclude_category_ids_array, 'include_children' => $args['include_children'] ); } if ( ! empty( $args['include_tag'] ) ) { $include_tag_ids_array = explode( ',', $args['include_tag'] ); $tax_query[] = array( 'taxonomy' => EWD_UFAQ_FAQ_TAG_TAXONOMY, 'field' => 'slug', 'terms' => $include_tag_ids_array ); } if ( ! empty( $tax_query ) ) { $args['tax_query'] = $tax_query; } /*$meta_query = array(); if ( ! empty( $args['product_name'] ) ) { $meta_query[] = array( 'key' => 'EWD_UFAQ_Product_Name', 'value' => $args['product_name'], 'compare' => '=', ); } if ( ! empty( $meta_query ) ) { $args['meta_query'] = $meta_query; }*/ $orderby = array(); if ( empty( $args['product_name'] ) and $ewd_ufaq_controller->settings->get_setting( 'group-by-product' ) ) { $orderby['meta_value'] = $ewd_ufaq_controller->settings->get_setting( 'group-by-product-order' ); } if ( ! empty( $args['orderby'] ) ) { if ( $args['orderby'] == 'rating' or $args['orderby'] == 'popular' ) { $orderby['meta_value_num'] = $args['order']; } elseif ( $args['orderby'] == 'date' ) { $orderby['date'] = $args['order']; } elseif ( $args['orderby'] == 'title' ) { $orderby['title'] = $args['order']; } elseif ( $args['orderby'] == 'set_order' ) { $orderby['meta_value_num'] = $args['order']; } } if ( $args['orderby'] == 'rating' ) { $args['meta_key'] = 'FAQ_Total_Score'; } elseif ( $args['orderby'] == 'popular' ) { $args['meta_key'] = 'ufaq_view_count'; } elseif ( $args['orderby'] == 'set_order' ) { $args['meta_key'] = 'ufaq_order'; } if ( ! empty( $orderby ) ) { $args['orderby'] = $orderby; } $this->args = $args; return $this->args; } /** * Parse $_REQUEST args and store in $this->args * * @since 2.0.0 */ public function parse_request_args() { $args = array(); if ( isset( $_REQUEST['faq_page'] ) ) { $args['faq_page'] = intval( $_REQUEST['faq_page'] ); } if ( isset( $_REQUEST['search_string'] ) ) { $args['search_string'] = sanitize_text_field( stripslashes( $_REQUEST['search_string'] ) ); } if ( isset( $_REQUEST['post_count'] ) ) { $args['post_count'] = sanitize_text_field( $_REQUEST['post_count'] ); } if ( isset( $_REQUEST['orderby'] ) ) { $args['orderby'] = sanitize_text_field( $_REQUEST['orderby'] ); } if ( isset( $_REQUEST['order'] ) ) { $args['order'] = sanitize_text_field( $_REQUEST['order'] ); } if ( isset( $_REQUEST['include_category'] ) ) { $args['include_category'] = sanitize_text_field( $_REQUEST['include_category'] ); } if ( isset( $_REQUEST['exclude_category'] ) ) { $args['exclude_category'] = sanitize_text_field( $_REQUEST['exclude_category'] ); } if ( get_query_var( 'ufaq_category_slug' ) ) { $args['include_category'] = get_query_var( 'ufaq_category_slug' ); } if ( isset( $_REQUEST['include_tag'] ) ) { $args['include_tag'] = sanitize_text_field( $_REQUEST['include_tag'] ); } if ( get_query_var( 'ufaq_tag_slug' ) ) { $args['include_tag'] = get_query_var( 'ufaq_tag_slug' ); } $this->args = array_merge( $this->args, $args ); } /** * Retrieve query results * * @since 2.0.0 */ public function get_faqs() { $faqs = array(); $args = apply_filters( 'ewd_ufaq_query_args', $this->args, $this->context ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while( $query->have_posts() ) { $query->the_post(); $faq = new ewdufaqFaq(); if ( $faq->load_post( $query->post ) ) { $faqs[] = $faq; } } } $this->found_faqs = $query->found_posts; $this->current_page = $this->args['paged']; $this->max_page = $query->max_num_pages; $this->faqs = $faqs; wp_reset_query(); return $this->faqs; } } } // endif