Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- add_filter( 'posts_search', 'm_cars_search_vin' );
- function m_cars_search_vin( $where ) {
- global $pagenow, $wpdb, $wp;
- // check if we are on the right page & performing a search & for the right post type
- if ( 'edit.php' != $pagenow || ! is_search() || ! isset( $wp->query_vars['s'] ) || 'cars' != $wp->query_vars['post_type'] ) {
- return $where;
- }
- // the meta key of the custom field we are looking for
- $meta_key = '_car_vin';
- $search_ids = array();
- $terms = explode( ',', $wp->query_vars['s'] );
- foreach ( $terms as $term ) {
- if ( is_numeric( $term ) ) {
- $search_ids[] = $term;
- }
- // Attempt to get a VIN
- $vin_to_id = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_parent FROM {$wpdb->posts} LEFT JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id WHERE meta_key='{$meta_key}' AND meta_value LIKE %s;", '%' . $wpdb->esc_like( wc_clean( $term ) ) . '%' ) );
- $vin_to_id = array_merge( wp_list_pluck( $vin_to_id, 'ID' ), wp_list_pluck( $vin_to_id, 'post_parent' ) );
- // include the ids of relevant posts in the results
- if ( sizeof( $vin_to_id ) > 0 ) {
- $search_ids = array_merge( $search_ids, $vin_to_id );
- }
- }
- $search_ids = array_filter( array_unique( array_map( 'absint', $search_ids ) ) );
- if ( sizeof( $search_ids ) > 0 ) {
- // if ids found, change the where clause
- $where = str_replace( 'AND (((', "AND ( ({$wpdb->posts}.ID IN (" . implode( ',', $search_ids ) . ")) OR ((", $where );
- }
- return $where;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement