Вопрос или проблема
Я немного новичок в WordPress/Woocommerce, но стараюсь разобраться…
У нас установлен и работает Woocommerce, где мы запрашиваем адрес для выставления счетов и номер телефона для счета (среди прочего), и я пытаюсь отобразить эти данные в таблице пользователей на бэкэнде (все пользователи), так как в данный момент данные берутся только из базовой информации о регистрации WordPress, а не из Woocommerce.
Любая помощь будет очень кстати.
Обновление:
Я надеюсь добавить несколько дополнительных колонок, используя данные Woocommerce.
Вся приведенная ниже информация предназначена для вашего текущего файла темы functios.php
(но лучше использовать дочернюю тему или пользовательский плагин).
Шаг 1.
Не уверен, разобрались ли вы с добавлением колонок, но упомяну – используйте хук manage_users_columns
.
add_filter( 'manage_users_columns', 'new_modify_user_table' );
function new_modify_user_table( $columnnames ) {
return array_slice( $columnnames, 0, 3, true )
+ array( 'billing_address' => 'Адрес для выставления счетов' )
+ array_slice( $columnnames, 3, NULL, true );
}
Функция array_slice()
требуется, потому что мы добавляем колонку на третье место в таблице.
Шаг 2.
Теперь пора использовать хук manage_users_custom_column
, чтобы добавить данные в колонку. Мы добавляем адрес для выставления счетов и телефон.
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );
function new_modify_user_table_row( $val, $column_name, $user_id ) {
switch ($column_name) {
case 'billing_address' :
$val = get_user_meta( $user_id, 'billing_address_1', true ) . '<br />';
$val .= get_user_meta( $user_id, 'billing_phone', true );
break;
}
return $val;
}
Если вы ищете, как получить полную информацию об адресе для выставления счетов (штат, страна и т. д.), посмотрите этот пример кода.
Ответ или решение
Для того чтобы добавить пользовательские метаданные WooCommerce, такие как адрес выставления и номер телефона, в таблицу пользователей на бэкенде WordPress, вам нужно выполнить несколько шагов, добавляя код в файл functions.php
вашей темы. Рекомендуется использовать дочернюю тему или создать собственный плагин, чтобы избежать потери изменений при обновлении темы.
Шаг 1: Добавление колонок
Чтобы добавить новые колонки в таблицу пользователей, вам следует использовать хук manage_users_columns
. Вот пример кода:
add_filter( 'manage_users_columns', 'new_modify_user_table' );
function new_modify_user_table( $columnnames ) {
return array_slice( $columnnames, 0, 3, true )
+ array( 'billing_address' => 'Адрес выставления' )
+ array_slice( $columnnames, 3, NULL, true );
}
Этот код добавляет новый столбец "Адрес выставления" после третьего столбца в таблице. Функция array_slice()
позволяет вставить новый элемент в нужное место, не нарушая порядок существующих колонок.
Шаг 2: Заполнение данных в колонках
Теперь необходимо заполнить добавленный столбец данными. Для этого используйте хук manage_users_custom_column
. Вот пример кода:
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );
function new_modify_user_table_row( $val, $column_name, $user_id ) {
switch ($column_name) {
case 'billing_address' :
$address = get_user_meta( $user_id, 'billing_address_1', true );
$phone = get_user_meta( $user_id, 'billing_phone', true );
$val = $address . '<br />';
$val .= 'Телефон: ' . $phone;
break;
}
return $val;
}
В этом коде мы получаем meta-данные пользователя с помощью функции get_user_meta()
. Мы берем billing_address_1
, который содержит основной адрес, и billing_phone
, чтобы показать номер телефона. Эти значения затем отображаются в колонке.
Получение полного адреса
Если вам нужно получить полный адрес, включая такие детали, как город, страна и т.д., вы можете модифицировать код следующим образом:
function new_modify_user_table_row( $val, $column_name, $user_id ) {
switch ($column_name) {
case 'billing_address' :
$address_1 = get_user_meta( $user_id, 'billing_address_1', true );
$address_2 = get_user_meta( $user_id, 'billing_address_2', true );
$city = get_user_meta( $user_id, 'billing_city', true );
$state = get_user_meta( $user_id, 'billing_state', true );
$postcode = get_user_meta( $user_id, 'billing_postcode', true );
$country = get_user_meta( $user_id, 'billing_country', true );
$phone = get_user_meta( $user_id, 'billing_phone', true );
$val = $address_1;
if ( !empty($address_2) ) $val .= ', ' . $address_2;
$val .= '<br />' . $city . ', ' . $state . ' ' . $postcode . '<br />' . $country . '<br />Телефон: ' . $phone;
break;
}
return $val;
}
Вывод
С помощью вышеуказанных шагов вы сможете успешно добавить и вывести метаданные WooCommerce в таблице пользователей на бэкенде. Убедитесь, что ваш сайт протестирован на предмет любых конфликтов после внесения изменений. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.