Как отобразить метаданные WordPress пользователя - PullRequest
0 голосов
/ 03 февраля 2020

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

 <?php $users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach($users as $user_id){
    print_r(get_user_meta ( $user_id->ID));
    }?>

Как можно отобразить только адрес? Я пробовал несколько вариантов этого, и это не работает.

echo $user_id->dokan_profile_settings[address];

Вот так выглядит var_dumb.

[dokan_profile_settings] => Array ( [0] => a:16:{s:10:"store_name";s:9:"Best Farm";s:9:"store_ppp";i:10;s:7:"address";a:6:{s:8:"street_1";s:16:"1600 valley road";s:8:"street_2";s:0:"";s:4:"city";s:8:"richmond";s:3:"zip";s:5:"23231";s:7:"country";s:2:"US";s:5:"state";s:2:"MO";}s:8:"location";s:0:"";s:12:"find_address";s:5:"Dhaka";s:6:"banner";i:0;s:5:"phone";s:0:"";s:10:"show_email";s:2:"no";s:14:"show_more_ptab";s:3:"yes";s:8:"gravatar";i:0;s:10:"enable_tnc";s:3:"off";s:9:"store_tnc";s:0:"";s:16:"dokan_store_time";a:7:{s:6:"sunday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:6:"monday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:7:"tuesday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:9:"wednesday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:8:"thursday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:6:"friday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}s:8:"saturday";a:3:{s:6:"status";s:5:"close";s:12:"opening_time";s:0:"";s:12:"closing_time";s:0:"";}}s:24:"dokan_store_time_enabled";s:2:"no";s:23:"dokan_store_open_notice";s:0:"";s:24:"dokan_store_close_notice";s:0:"";} ) )

Ответы [ 3 ]

2 голосов
/ 03 февраля 2020

Возьми гусак на документы для get_user_meta(). Третий параметр хорош, потому что он заставляет его возвращать одно значение вместо массива (обычно 1 элемент). Примечание: если вам нужен только dokan_profile_settings, вы можете получить это с помощью get_user_meta( $user_id->ID, 'dokan_profile_settings', true );. (Еще одна интересная вещь: с get_users вы можете сделать 'fields' => 'all_with_meta', чтобы вернуть также все мета-поля

. Смысл этого мета-поля в том, что данные сериализуются . Как только вы получить эту переменную, независимо от метода, вам нужно unserialize, если она не будет автоматически сериализована. WordPress имеет удобную функцию с именем maybe_unserialize, которая работает хорошо для таких полей в случае, если данные могут или не могли быть сериализованы.

Это приводит нас к чему-то вроде этого:

$users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach( $users as $user ){
    $dokan_profile_settings = get_user_meta( $user->ID, 'dokan_profile_settings', true );
    $dokan_profile_settings = maybe_unserialize( $dokan_profile_settings );

    echo $dokan_profile_settings['address'];
}
0 голосов
/ 04 февраля 2020

Я надеюсь, что это может быть полезно для вас

<?php $users = get_users( array( 'fields' => array( 'ID' ) ) ); foreach($users as $user){ $dokan_profile_setings = get_user_meta ( $user->ID,'dokan_profile_setting', true); $getAddress = $dokan_profile_setings['address']; echo $getAddress; }?>

0 голосов
/ 03 февраля 2020

Вы должны сделать так.

<?php $users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach($users as $user_id){
    $dokan_profile_setings = get_user_meta ( $user_id->ID,'dokan_profile_setting', true);
    $address = $dokan_profile_setings['address'];
    echo $address;
}?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...