Распаковка WordPress wp_usermeta - PullRequest
       1

Распаковка WordPress wp_usermeta

0 голосов
/ 24 сентября 2011

Я пишу скрипт, который будет извлекать wp_usermeta в удобочитаемом формате.

У меня есть sql, как показано ниже:

select distinct(user_id), meta_value as suburb from wp_usermeta where meta_key = 'suburb' order by user_id

Теперь есть ли способ, с помощью которого мы можем включить все остальные поля, используя sql-запрос, чтобы объединить столбец справа и сделать результат выходящим в одну таблицу, чтобы я мог использовать это для экспорта в csv?

ОБНОВЛЕНИЕ 25 / SEP / 2011, 12:34: Не имеет значения, ребята, я нашел свой ответ см ниже sql !!!

SELECT
    u.id, u.user_login,
    MIN(CASE m.meta_key WHEN 'title' THEN m.meta_value END) AS title,
    MIN(CASE m.meta_key WHEN 'first_name' THEN m.meta_value END) AS first_name,
    MIN(CASE m.meta_key WHEN 'last_name' THEN m.meta_value END) AS last_name,
    MIN(CASE m.meta_key WHEN 'suburb' THEN m.meta_value END) AS phone,
    MIN(CASE m.meta_key WHEN 'state' THEN m.meta_value END) AS state,
    MIN(CASE m.meta_key WHEN 'country' THEN m.meta_value END) AS country,
    MIN(CASE m.meta_key WHEN 'postcode' THEN m.meta_value END) AS postcode,
    MIN(CASE m.meta_key WHEN 'contact_no' THEN m.meta_value END) AS contact_no,
    MIN(CASE m.meta_key WHEN 'email' THEN m.meta_value END) AS email,
    MIN(CASE m.meta_key WHEN 'occupation' THEN m.meta_value END) AS occupation,
    MIN(CASE m.meta_key WHEN 'workplace' THEN m.meta_value END) AS workplace,
    MIN(CASE m.meta_key WHEN 'maternitybg' THEN m.meta_value END) AS maternitybg,
    MIN(CASE m.meta_key WHEN 'trainingdate' THEN m.meta_value END) AS trainingdate,
    MIN(CASE m.meta_key WHEN 'traininglocation' THEN m.meta_value END) AS traininglocation,
    MIN(CASE m.meta_key WHEN 'coltraining' THEN m.meta_value END) AS coltraining,
    MIN(CASE m.meta_key WHEN 'trainingyear' THEN m.meta_value END) AS trainingyear,
    MIN(CASE m.meta_key WHEN 'coltraining' THEN m.meta_value END) AS coltraining,
    MIN(CASE m.meta_key WHEN 'isinstructor' THEN m.meta_value END) AS isinstructor,
    MIN(CASE m.meta_key WHEN 'gender' THEN m.meta_value END) AS gender,
    MIN(CASE m.meta_key WHEN 'idf_indig_tsi' THEN m.meta_value END) AS idf_indig_tsi,
    MIN(CASE m.meta_key WHEN 'idf_ct_ld' THEN m.meta_value END) AS idf_ct_ld,
    MIN(CASE m.meta_key WHEN 'comments' THEN m.meta_value END) AS comments

    FROM wp_users u
      LEFT JOIN wp_usermeta m ON u.ID = m.user_id
        AND m.meta_key IN ('title', 'first_name', 'last_name', 'suburb', 'state', 'country', 'postcode', 'contact_no', 'email', 'occupation', 'workplace', 'maternitybg', 'trainingdate', 'traininglocation', 'coltraining', 'isinstructor', 'gender', 'idf_indig_tsi', 'idf_ct_ld', 'comments')
    GROUP BY u.ID

Надеюсь, это поможет людям, которые ищут это решение!

1 Ответ

2 голосов
/ 24 сентября 2011

Вы действительно не должны использовать SQL напрямую в WordPress, поскольку они предлагают десятки функций, которые сделают работу за вас.Это также сделает ваш код гибким для будущих обновлений WordPress.

В вашем случае вы заинтересованы в get_user_meta()

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