![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/www/wp-content/themes/dt-the7/inc/ |
<?php /** * The7 Query. * * @package The7 */ defined( 'ABSPATH' ) || exit; /** * Class The7_Query */ class The7_Query { public function get_posts_by_terms( $args = array() ) { $defaults = array( 'post_type' => 'post', 'taxonomy' => 'category', 'terms' => null, 'order' => 'DESC', 'orderby' => 'date', 'posts_per_page' => 10, 'post__in' => null, 'post__not_in' => null, 'select' => 'all', 'no_found_rows' => false, 'meta_key' => null, ); $args = wp_parse_args( $args, $defaults ); if ( ! $this->verify_args( $args ) ) { return new WP_Query(); } $query_args = array( 'post_type' => $args['post_type'], 'order' => $args['order'], 'no_found_rows' => $args['no_found_rows'], 'orderby' => 'name' === $args['orderby'] ? 'title' : $args['orderby'], 'paged' => the7_get_paged_var(), 'suppress_filters' => false, ); if ( $args['meta_key'] ) { $query_args['meta_key'] = $args['meta_key']; } if ( $args['posts_per_page'] ) { $query_args['posts_per_page'] = $args['posts_per_page']; } if ( $args['post__in'] ) { $query_args['post__in'] = $args['post__in']; } if ( $args['post__not_in'] ) { $query_args['post__not_in'] = $args['post__not_in']; } // construct base tax_query if not all terms slected if ( in_array( $args['select'], array( 'only', 'except' ) ) && ! empty( $args['terms'] ) && is_array( $args['terms'] ) ) { // get all terms ids $all_terms = wp_list_pluck( get_categories( array( 'type' => $args['post_type'], 'taxonomy' => $args['taxonomy'], 'pad_counts' => false, 'hide_empty' => 1, 'hierarchical' => 0, ) ), 'term_id' ); // sanitize terms $terms = array_values( $args['terms'] ); // ONLY tax_query if ( 'only' == $args['select'] ) { $operator = 'IN'; if ( 0 == $terms[0] ) { $terms = $all_terms; $operator = 'NOT IN'; } $query_args['tax_query'] = array( array( 'taxonomy' => $args['taxonomy'], 'terms' => $terms, 'operator' => $operator, 'field' => 'id', ) ); // EXCEPT tax_query } elseif ( 'except' == $args['select'] ) { $in_terms = array_diff( $all_terms, $terms ); sort( $in_terms ); if ( $in_terms ) { $query_args['tax_query'] = [ 'relation' => 'OR', [ 'taxonomy' => $args['taxonomy'], 'terms' => $in_terms, 'operator' => 'IN', 'field' => 'id', ], [ 'taxonomy' => $args['taxonomy'], 'terms' => $terms, 'operator' => 'NOT IN', 'field' => 'id', ] ]; add_filter( 'posts_clauses', 'dt_core_join_left_filter' ); } } } $query_args = apply_filters( 'presscore_query-get_posts_by_terms', $query_args, $args ); $page_query = new WP_Query( $query_args ); remove_filter( 'posts_clauses', 'dt_core_join_left_filter' ); return $page_query; } public function get_related_posts_by_terms( $args = array() ) { $defaults = array( 'post_type' => 'post', 'taxonomy' => 'category', 'posts_per_page' => 10, 'terms' => null, 'post__not_in' => array( get_the_ID() ) ); $args = wp_parse_args( $args, $defaults ); if ( ! $this->verify_args( $args ) ) { return new WP_Query(); } return new WP_Query( apply_filters( 'the7_related_posts_query_args', array( 'no_found_rows' => 1, 'posts_per_page' => $args['posts_per_page'], 'post_type' => $args['post_type'], 'post__not_in' => $args['post__not_in'], 'suppress_filters' => false, 'tax_query' => array( array( 'taxonomy' => $args['taxonomy'], 'fields' => 'term_id', 'terms' => $args['terms'] ) ), ) ) ); } public function get_attachments( $args = array() ) { $defaults = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'post_status' => 'inherit', 'orderby' => 'date', 'order' => 'DESC', 'posts_per_page' => 10, 'no_found_rows' => true, 'suppress_filters' => false, ); $args = wp_parse_args( $args, $defaults ); return new WP_Query( $args ); } public function get_posts( $args = array() ) { $defaults = array( 'post_type' => 'post', 'orderby' => 'date', 'order' => 'DESC', 'posts_per_page' => 10, 'no_found_rows' => false, 'suppress_filters' => false, ); $args = wp_parse_args( $args, $defaults ); if ( ! $this->verify_args( $args ) ) { return new WP_Query(); } return new WP_Query( $args ); } protected function verify_args( $args ) { if ( ! post_type_exists( $args['post_type'] ) ) { return false; } elseif ( isset( $args['taxonomy'] ) && ! taxonomy_exists( $args['taxonomy'] ) ) { return false; } return true; } }