2017-02-21 2 views
1

У меня есть пользовательская таблица, которая используется для отслеживания доступа к веб-сайту. таблица выглядит следующим образом:Wordpress получить всю категорию из сообщения slug через мой sql

даты, post_slug, пользователь

Я хочу, чтобы создать запрос (MySQL), что из этой таблицы добавить 4-й столбец, содержащий все категории должности.

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

информацию следует хранить в wp_term_relationship и wp_terms, но я не знаю, как создать только одну строку, а не п строк для каждой категории

ответ

1

Главное, что вы должны сделать, это group by wp_posts.id. Эта команда объединяет все равные id в одну строку. Теперь вы должны использовать group_concat(FIELDNAME), чтобы получить все поля желаний в одном столбце.

Вам нужны названия категорий или идентификатор категории?

Если вы хотите иметь название категории:

SELECT tbl.*,GROUP_CONCAT(term.name) FROM 
    YOURTABLE as tbl 
    left join wp_posts as p 
    on p.post_name = tbl.post_slug 
    left join wp_term_relationships as rels 
    on rels.object_id = p.ID 
    left JOIN wp_term_taxonomy as tx 
    on tx.term_taxonomy_id = rels.term_taxonomy_id 
    left join wp_terms as term 
    on term.term_id = tx.term_id 
    where tx.taxonomy = "category" 
    group by p.ID 

Если вам нужна категория ID:

SELECT tbl.*,GROUP_CONCAT(tx.term_taxonomy_id) FROM 
YOURTABLE as tbl 
left join wp_posts as p 
on p.post_name = tbl.post_slug 
left join wp_term_relationships as rels 
on rels.object_id = p.ID 
left JOIN wp_term_taxonomy as tx 
on tx.term_taxonomy_id = rels.term_taxonomy_id 
-- left join wp_terms as term 
-- on term.term_id = tx.term_id 
where tx.taxonomy = "category" 
group by p.ID 

Примечание:

  • YOURTABLE ваша таблица 3-колонки.

  • Если вы хотите получить все тег, просто редактировать where tx.taxonomy = "category" к where tx.taxonomy = "post_tag"

  • Если вы используете пользовательские типы почтовых и вы хотите WordPress пользовательских типов почтовых тегов или категории, добавить and p.post_type ="YOURPOSTTYPE" после where .. линии.

+0

Это сработало, я просто добавил DISTINCT в term.name из GROUP_CONTACT, иначе генерировал n раз одну и ту же группу – Kerby82

Смежные вопросы