'', // javascript function name in the windows scope | if empty, shows results 'search_values' => 0, 'limit' => 15, 'delimiter' => '!!!CFRES!!!', 'controls_position' => 'right', 'class' => '', 'usermeta' => 0, 'show_pods' => false ); public static function registerAjax() { if ( !has_action('wp_ajax_wd_search_cf') ) { add_action('wp_ajax_wd_search_cf', array(get_called_class(), 'search')); } } function render() { ?>
args['class'] : "";?>' id='wd_cf_search-'> args['controls_position'] == 'left') $this->printControls(); ?> label; ?> args['controls_position'] != 'left') $this->printControls(); ?>
usermeta; else $table = $wpdb->postmeta; if ($data['search_values'] == 1) { $cf_query = $wpdb->prepare( "SELECT DISTINCT(meta_key) FROM $table WHERE meta_key LIKE '%s' OR meta_value LIKE '%s' ORDER BY meta_key ASC LIMIT %d", $phrase, $phrase, $data['limit']); } else { $cf_query = $wpdb->prepare( "SELECT DISTINCT(meta_key) FROM $table WHERE meta_key LIKE '%s' ORDER BY meta_key ASC LIMIT %d", $phrase, $data['limit']); } $cf_results = $wpdb->get_results( $cf_query ); $remaining_limit = $data['limit'] - count($cf_results); if ( $remaining_limit > 0 ) { // Fuzzy matches $not_in_query = ''; $not_in = array(); foreach ($cf_results as $r) { $not_in[] = $r->meta_key; } if (count($not_in) > 0) { $not_in_query = " AND meta_key NOT IN ('" . implode("','", $not_in) . "')"; } $phrase = '%' . trim($_POST['wd_phrase']) . '%'; if ($data['search_values'] == 1) { $cf_query = $wpdb->prepare( "SELECT DISTINCT(meta_key) FROM $table WHERE (meta_key LIKE '%s' OR meta_value LIKE '%s') $not_in_query ORDER BY meta_key ASC LIMIT %d", $phrase, $phrase, $remaining_limit); } else { $cf_query = $wpdb->prepare( "SELECT DISTINCT(meta_key) FROM $table WHERE (meta_key LIKE '%s') $not_in_query ORDER BY meta_key ASC LIMIT %d", $phrase, $remaining_limit); } $cf_results = array_merge($cf_results, $wpdb->get_results($cf_query)); } if ( $data['show_pods'] ) $pods_fields = self::searchPods($_POST['wd_phrase']); else $pods_fields = array(); Ajax::prepareHeaders(); print_r($data['delimiter'] . json_encode(array_merge($pods_fields, $cf_results)) . $data['delimiter']); die(); } private static function searchPods($s): array { $ret = array(); if ( function_exists('pods_api') ) { // Filter table storage based fields only $pods = get_posts(array( 'fields' => 'ids', 'posts_per_page' => -1, 'post_type' => '_pods_pod', 'meta_query' => array( array( 'key' => 'storage', 'value' => 'table', 'compare' => 'LIKE' ) ) )); if ( !is_wp_error($pods) && !empty($pods) ) { $pods_fields = get_posts(array( 'fields' => 'post_name', 'posts_per_page' => -1, 's' => $s, 'post_type' => '_pods_field', 'post_parent__in' => $pods // Only filtered parents by table storage type )); if ( !is_wp_error($pods_fields) && !empty($pods_fields) ) { foreach ($pods_fields as $f) { $ret[] = array('meta_key' => '__pods__' . $f->post_name); } } } } return $ret; } }