Sid Gifari File Manager
🏠 Root
/
home2
/
meumer25
/
netodolele.com.br
/
wp-content
/
plugins
/
jet-engine
/
includes
/
rest-api
/
endpoints
/
Editing: search-posts.php
<?php /** * Add/Update post type endpoint */ class Jet_Engine_Rest_Search_Posts extends Jet_Engine_Base_API_Endpoint { /** * Returns route name * * @return string */ public function get_name() { return 'search-posts'; } /** * API callback * * @return void */ public function callback( $request ) { $params = $request->get_params(); $query = $params['query']; $ids = $params['ids']; $post_type = $params['post_type']; $search_terms = $params['search_terms']; $tax = $params['tax'] ?? ''; $query_context = $params['query_context'] ?? null; if ( ! empty( $ids ) ) { $ids = explode( ',', $ids ); } if ( $search_terms ) { return $this->search_terms( $query, $ids, $tax ); } if ( ! empty( $post_type ) ) { $post_type = explode( ',', $post_type ); } add_filter( 'posts_where', array( $this, 'force_search_by_title' ), 10, 2 ); $args = array( 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'suppress_filters' => false, 'numberposts' => 10, ); if ( $query ) { $args['s'] = $query; $args['s_title'] = $query; } if ( ! empty( $ids ) ) { $args['post__in'] = $ids; } if ( ! empty( $post_type ) ) { $args['post_type'] = $post_type; } $posts = get_posts( $args ); remove_filter( 'posts_where', array( $this, 'force_search_by_title' ), 10, 2 ); $result = array(); foreach ( $posts as $post ) { $result[] = apply_filters( 'jet-engine/rest-api/search-posts/result-item', array( 'value' => (string) $post->ID, 'label' => $post->post_title, ), $post, $query_context ); } return rest_ensure_response( $result ); } /** * Perform search by taxonomy terms * * @param [type] $query [description] * @param [type] $ids [description] * @param [type] $tax [description] * @return [type] [description] */ public function search_terms( $query = '', $ids = array(), $tax = '' ) { $result = array(); if ( ! $tax ) { return rest_ensure_response( $result ); } $args = array( 'taxonomy' => $tax, 'hide_empty' => false, ); if ( ! empty( $ids ) ) { $args['include'] = $ids; } else { $args['name__like'] = $query; } $terms = get_terms( $args ); foreach ( $terms as $term ) { $result[] = array( 'value' => (string) $term->term_id, 'label' => $term->name, ); } return rest_ensure_response( $result ); } /** * Force query to look in post title while searching * * @return [type] [description] */ public function force_search_by_title( $where, $query ) { $args = $query->query; if ( ! isset( $args['s_title'] ) ) { return $where; } else { global $wpdb; $searh = esc_sql( $wpdb->esc_like( $args['s_title'] ) ); $where .= " AND {$wpdb->posts}.post_title LIKE '%$searh%'"; } return $where; } /** * Returns endpoint request method - GET/POST/PUT/DELTE * * @return string */ public function get_method() { return 'GET'; } /** * Check user access to current end-popint * * @return bool */ public function permission_callback( $request ) { return current_user_can( 'manage_options' ); } /** * Returns arguments config * * @return array */ public function get_args() { return array( 'query' => array( 'default' => '', 'required' => false, ), 'ids' => array( 'default' => '', 'required' => false, ), 'post_type' => array( 'default' => 'any', 'required' => false, ), 'tax' => array( 'default' => '', 'required' => false, ), 'search_terms' => array( 'default' => false, 'required' => false, ), 'query_context' => array( 'default' => null, 'required' => false, ), ); } }
Save
Cancel