Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
jet-engine
/
includes
/
rest-api
/
endpoints
:
search-posts.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?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']; if ( ! empty( $ids ) ) { $ids = explode( ',', $ids ); } 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[] = array( 'value' => (string) $post->ID, 'label' => $post->post_title, ); } 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, ), ); } }