Получить id записей кастомной таксономии
-
Как получить массив IDшников постов из кастомной таксономии?
Смотрел на функцию
get_terms
, но не понял как это сделать и к тому же по описанию на wp-kama он работает очень медленно.
-
get_terms получает термины, а не записи.
полагаю, что если вам надо получить все записи всех терминов определенной таксономии — то сначала через get_terms надо получить все термины таксономии, а потом уже получать все записи всех найденных терминов.
решений много — https://stackoverflow.com/questions/3354272/get-all-posts-from-custom-taxonomy-in-wordpressесли вам надо получить все записи всех терминов
Нет, записи не нужны. Мне надо получить только ID всех постов из одной кастомной таксономии. Причем всех статусов, а не только опубликованных.
Сейчас пытаюсь сделать это через WP_Query, но пока тоже не получается.еще раз повторю.
нельзя получить ни записи, ни их ID по таксономии.
только по терминам этой таксономии.
а значит сначала надо получить ID всех терминов этой таксономии — а потом WP_Query с выборкой по терминам таксономии.$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty'); foreach ($myterms as $term) : $args = array( 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash'), 'posts_per_page' => -1, 'tax_query' => array( array( $term->slug ) ) ); // assigning variables to the loop global $wp_query; $wp_query = new WP_Query($args); // starting loop while ($wp_query->have_posts()) : $wp_query->the_post(); //тут засовываем в массив ID записей через get_the_ID() endwhile; endforeach;
Как получить массив IDшников постов из кастомной таксономии?
Если Вы сами создавали таксономию, то точно знаете, какой тип записей закреплен за ней. Если нет, то можно и посмотреть код. Или, если совсем плохо, получить тип(ы) из глобальной переменной $wp_taxonomies.
А зная тип, можно легко получить массив всех IDов записей нужного типа
$ids = $wpdb->get_col("select ID from $wpdb->posts where post_type='нужный_тип'");
WP_Query с выборкой по терминам таксономии.
Вот это я вчера пытался сделать и затык был именно на
//тут засовываем в массив ID записей через get_the_ID()
Названия и ссылки я получал, а вот как получить ID так вчера и не сообразил. Попробую ещё сегодня повоевать.
А зная тип, можно легко получить массив всех IDов записей нужного типа
Спасибо.
Использоватьwpdb
я как-то сторонюсь, хотя возможно что в данном случае оно будет и лучше.хотя возможно что в данном случае оно будет и лучше.
Практически во всех нестандартных случаях специально сконструированный запрос будет эффективнее. Да и в некоторых стандартных, кстати, тоже. Универсальность и эффективность — антагонисты.
А зная тип, можно легко получить массив всех IDов записей нужного типа
А вообще это не то — мне надо получить ID не по типу поста, а по одному терму таксономии. Прощу прощения если не внятно объяснил задачу.
Посмотрел в базе и понял алгоритм: надо вначале получить ID
терматаксономии, а потом уже выбратьobject_id
из таблицыwp_term_relationships
.- Ответ изменён 4 года, 6 месяцев назад пользователем Derat.
Если это не будет сильно нагло с моей стороны — я правильно составил запрос?
$ids = $wpdb->get_col("select object_id from $wpdb->term_relationships where term_taxonomy_id=$termsid");
$termsid
— IDтерматаксономии, который я предварительно получу.- Ответ изменён 4 года, 6 месяцев назад пользователем Derat.
Нет. term_id и term_taxonomy_id — разные IDы, хотя их значения и совпадают в подавляющем большинстве случаев.
Я впопыхах выше не правильно написал.
$termsid
— это ID таксономии, который я предварительно получу.
ID терминов — это как раз то, что нужно получить.$termsid— это ID таксономии
where term_taxonomy_id=$termsid
То есть, Вы хотите сравнивать id терма с id таксономии? Круто.
ID терминов — это как раз то, что нужно получить.
select object_id
Еще круче.
Всё, достаточно, я самоизолюруюсь. Извините.
Еще круче.
Да я ж не знаю как составить запрос, чтобы получить все ID из
object_id
при определенном значении вterm_taxonomy_id
Вот например при значении
75
вterm_taxonomy_id
получить массив значений из ‘object_id’ —1619, 1665, 1731
.Это выборка из таблицы
wp_term_relationships
Помогите если не трудно.
- Ответ изменён 4 года, 6 месяцев назад пользователем Derat.
Вот сейчас проверил запрос
$post_ids = $wpdb->get_col("select object_id from $wpdb->term_relationships where term_taxonomy_id=75"); foreach ( $post_ids as $post_id ) { echo 'post ID = '.$post_id."<br>"; }
Всё выводит.
Теперь осталось разобраться с сортировкой.
Всё, достаточно, я самоизолюруюсь. Извините.
И всё равно спасибо за вариант с
wpdb
. 🙂
- Тема «Получить id записей кастомной таксономии» закрыта для новых ответов.