Intereting Posts
Пользовательский тип сообщения, пользовательский список столбцов Как добавить скрытое поле ввода в форму пользовательского сообщения (в таблице столбцов)? Пользовательский шаблон страницы для таксономии категорий WP_List_Table по умолчанию orderby является числовым Вызвать заголовок wp-blog-header.php без выполнения wp_query Поле поиска для всех сайтов – Multisite Пользовательское уведомление администратора WordPress по-прежнему отображается после проверки wp_insert_post_data Введите пароль в поле «Хэш» в базу данных, распакуйте в админ? Отображать несколько пользовательских типов сообщений и сортировать их по хронологии одним из своих полей Изменение виджета поиска по умолчанию Как использовать плагин jQuery Получите User_id вне wordpress, Не удалось получить точный URL-адрес файла на сервере, находящемся в активной теме WordPress Разделить the_title Ключ к действию только для публикации публикации не при редактировании или обновлении

WPDB – чтение и запись значений из / в базу данных

У меня есть пользовательское поле в usermeta называемое vatnumber . Если поле имеет значение, как я могу прочитать это конкретное значение для пользователя X?

Вот что я до сих пор:

 <tr class="vatnumber"> <th><?php _e( 'VAT-Number:', 'wpdb_usermeta' ); ?></th> <td><?php $wpdb->get_results("SELECT userid, vatnumber FROM usermeta"); ?></td> </tr> 

Но я еще не совсем понимаю wpdb. Я знаю, что он используется для чтения и записи из базы данных и в базу данных, но если мне нужно значение для конкретного пользователя, мне нужно назначить user_id переменной?

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

Я был бы рад, если бы вы могли дать мне примерный лакомый кусочек кода.

edit01:

из того, что я понимаю, я могу изменить его на

 <?php $wpdb->get_user_meta($user_id, vatnumber,"); ?> 

Но $single = false дает мне массив для всех пользователей с их соответствующими user_id? Потому что user_id в этом случае является переменной.

Мне жаль, что я не использовал базу данных WordPress через некоторое время, но как сообщить системе, для которой пользователь должен получить информацию? Мне нужно было бы прочитать идентификатор current_user, не так ли?

Это по-прежнему актуальный вопрос, даже если есть более простой способ.

Этот простой способ – get_user_meta($user_id,'vatnumber',true);

НЕ $wpdb->get_user_meta($user_id, vatnumber,''); Кстати.

Установка значения $single flag в true происходит потому, что, хотя вы можете хранить несколько значений в одном ключевом имени, это обычно лучше избегать, чтобы избежать путаницы.

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

 <?php global $wpdb; $metakey = "vatnumber"; $dbquery = $wpdb->prepare("SELECT meta_value FROM ".$wpdb->prefix."usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $metakey); $vatnumber = $wpdb->get_var($dbquery); ?> 

(Вам нужно вызвать global $wpdb; только один раз внутри каждой функции.) Или, если вы хотите сделать это все сразу:

 <?php global $wpdb; $vatnumber = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM ".$wpdb->prefix."usermeta WHERE user_id = %d AND meta_key = %s", $user_id, "vatnumber") ); ?> 

Обратите внимание на использование префикса $ wpdb->, который обычно выводит wp_ поскольку имя стандартной таблицы wp_usermeta но префикс может быть изменен, и это хорошая практика, чтобы поддерживать это в плагине (но может не понадобиться для пользовательского кодирования самостоятельно сайт, где вы знаете, что это wp_ .)

Также обратите внимание на действие $ wpdb-> prepare, которое, как правило, необходимо в эти дни, чтобы избежать попыток внедрения MySQL. Значение% d заменяется числовым значением $ user_id. % S заменяется строковым значением $ meta_key.

Если вы хотите получить ВСЕ user_id и соответствующие meta_value для тех пользователей с сохраненным номером НДС, THEN вы можете использовать метод get_results, чтобы получить их все, например:

 <?php global $wpdb; $metakey = "vatnumber"; $dbquery = $wpdb->prepare("SELECT user_id,meta_value FROM ".$wpdb->prefix."usermeta WHERE meta_key = %s", $metakey); $vatdata = $wpdb->get_results($dbquery); foreach ($vatdata as $data) { echo "VAT for User ".$data->user_id.": ".$data->meta_value."<br>"; } ?> 

Дополнительные примеры: https://codex.wordpress.org/Class_Reference/wpdb