/** * Plugin Name: GoFit Listom Custom Search * Description: Custom search functionality for Listom with GoFit prefix * Version: 1.0.0 * Author: Rahul Praapati * Text Domain: gofit-listom-custom-search */ if (!defined('ABSPATH')) { exit; } class GoFit_Listom_Custom_Search { public function __construct() { add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); add_action('wp_ajax_gofit_ajax_search', array($this, 'handle_ajax_search')); add_action('wp_ajax_nopriv_gofit_ajax_search', array($this, 'handle_ajax_search')); } public function enqueue_scripts() { wp_enqueue_script('jquery'); wp_enqueue_script( 'gofit-custom-search', plugin_dir_url(__FILE__) . 'gofit-custom-search.js', array('jquery'), '1.0.0', true ); wp_localize_script('gofit-custom-search', 'gofit_vars', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('gofit_search_nonce') )); wp_enqueue_style( 'gofit-custom-search', plugin_dir_url(__FILE__) . 'gofit-custom-search.css', array(), '1.0.0' ); } public function handle_ajax_search() { check_ajax_referer('gofit_search_nonce', 'nonce'); $search_term = sanitize_text_field($_POST['search_term']); $is_suggestion = isset($_POST['is_suggestion']) ? (bool)$_POST['is_suggestion'] : false; if ($is_suggestion) { $this->handle_suggestions($search_term); } } private function handle_suggestions($search_term) { $args = array( 'post_type' => 'listdom-listing', 'post_status' => 'publish', 'posts_per_page' => 5, 's' => $search_term ); $query = new WP_Query($args); $suggestions = array(); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $suggestions[] = array( 'text' => get_the_title(), 'post_url' => get_permalink(), 'post_excerpt' => get_the_excerpt(), 'thumbnail' => get_the_post_thumbnail_url(get_the_ID(), 'thumbnail') ); } } wp_reset_postdata(); wp_send_json_success(array('suggestions' => $suggestions)); } } new GoFit_Listom_Custom_Search();