Как я могу предложить только предложить одну таксономию?

Я использую встроенный плагин wordpress для вызова записей из таблицы терминов. Используя следующий sql-запрос, он выплескивает все термины:

$query = 'SELECT term_id,name FROM ' . $wpdb->terms . ' WHERE name LIKE \'' . $search . '%\' ORDER BY name ASC'; 

Я хотел бы ограничить термины, которые он выплескивает в одну таксономию, например, «категории» или «post_tags». Я попробовал код sql ниже, но он возвращается без каких-либо результатов.

 function test() { global $wpdb; $search = esc_sql( $wpdb -> esc_like($_REQUEST['q'])); $query = 'Select term_taxonomy_id, term_id, taxonomy, name FROM ' . $wpdb->term_taxonomy . ' JOIN ' . $wpdb->terms . ' ON term_taxonomy.term_id = terms.term_id WHERE taxonomy = \'catagory\' AND name LIKE \'' . $search . '%\' ORDER BY name ASC'; foreach ($wpdb->get_results($query) as $row) { $name = $row->name; $id = $row-> term_id; echo $name, "\n"; } die(); } add_action('wp_ajax_test', 'test'); add_action('wp_ajax_nopriv_test', 'test'); 

После соединения term_id существует два раза. Вы должны указать, какой term_id вы запрашиваете, префикс полного имени таблицы (или псевдонима).

Также есть другая ошибка term_taxonomy.term_id = terms.term_id Отсутствующий префикс таблицы.

Таким образом, обновленный запрос будет выглядеть так:

 $query = 'SELECT term_taxonomy_id, ' . $wpdb->prefix . 'terms.term_id, taxonomy, name FROM ' . $wpdb->term_taxonomy . ' JOIN ' . $wpdb->terms . ' ON ' . $wpdb->prefix . 'term_taxonomy.term_id = ' . $wpdb->prefix . 'terms.term_id WHERE taxonomy = \'category\' AND name LIKE \'' . $search . '%\' ORDER BY name ASC';