реализация моего wp_query с использованием класса $ wpdb

У меня есть два персонализированных doctors типа и location . Каждое сообщение для doctors относится к столбцу location используется поле «Дополнительные пользовательские поля». Я хочу написать свой WP_Query() используя класс $wpdb и чистый SQL. Как я могу это сделать?

 $args = array( 'post_type' => 'doctors', 'meta_query' => array( array( 'key' => 'location', // name of custom field 'value' => '"' . get_the_ID() . '"', 'compare' => 'LIKE', ) ), ); $testimonials = new WP_Query( $args ); 

Вы не упомянули о том, чего хотите от этого запроса, и для чего он нужен. Вы должны уточнить это, чтобы получить наиболее точный ответ.

В любом случае, если вы хотите написать чистый запрос SQL, вы не можете использовать WP_Query, но вместо этого нужно использовать $wpdb->get_results , как указано @hadimahoor. Вот запрос, чтобы получить список всех врачей с их местоположением.

 global $wpdb; // Pure SQL $sql = $wpdb->prepare("SELECT p.ID, post_title as doctor, p2.ID as location_id, p2.post_title as location FROM {$wpdb->prefix}posts p INNER JOIN {$wpdb->prefix}postmeta m ON m.post_id = p.ID AND m.meta_key = 'location' INNER JOIN {$wpdb->prefix}posts p2 ON p2.ID = m.meta_value WHERE p.post_status = 'publish' AND ..."); $doctors = $wpdb->get_results($sql); 

И вот самое простое решение получить список врачей по месту:

 // Get doctors by location $doctors = get_posts([ 'post_type' => 'doctors', 'meta_key' => 'location', 'meta_value' => $location_id ]);