WordPress获取账单手机号问题:代码正常但手机号不显示
解决WordPress短码无法显示用户billing_phone的问题
问题出在你直接通过$user->data->billing_phone读取账单手机号——$user->data仅包含WordPress用户表的默认字段,而billing_phone是WooCommerce添加的用户元数据,必须用get_user_meta()函数获取。
修改后的完整代码
// 先检查my_custom_users_list函数是否已定义 if(!function_exists('my_custom_users_list')){ // 短码调用时执行的函数 function my_custom_users_list() { $args = array(); // 可根据需求定义参数 $users = get_users($args); $listHtml = '<ul>'; foreach($users as $user){ // 获取账单手机号,第二个参数true表示返回单个值而非数组 $billing_phone = get_user_meta($user->ID, 'billing_phone', true); // 处理空值情况 $phone_display = !empty($billing_phone) ? $billing_phone : '未填写'; $listHtml .= '<li>' . 'ID: '.$user->data->ID."<br />" . 'Username: '.$user->data->user_login."<br />" . 'Nice Name: '.$user->data->user_nicename."<br />" . 'Display Name: '.$user->data->display_name."<br />" . 'Email: '.$user->data->user_email."<br />" . 'URL (website): '.$user->data->user_url."<br />" . 'Registration Date: '.$user->data->user_registered."<br />" . 'User Phone number: '.$phone_display."<br />" . '</li>'; } $listHtml .= '</ul>'; return $listHtml; } } // 注册my-users-list短码 function register_my_users_list_shortcode(){ add_shortcode('my-users-list', 'my_custom_users_list'); } add_action( 'init', 'register_my_users_list_shortcode' ); // 测试短码可取消注释下面一行: /*echo do_shortcode('[my-users-list]');*/
关键说明
- 使用
get_user_meta($user->ID, 'billing_phone', true)获取元数据:第一个参数是用户ID,第二个是元字段名,第三个true确保返回字符串而非数组。 - 添加了空值判断,避免无手机号时显示空白,提升用户体验。
内容的提问来源于stack exchange,提问作者Sanjay Mansukhalal
相关产品推荐
相关产品推荐

