我在自定义帖子类型模板中回显管理员的配置文件元时遇到问题。它过去很管用,但由于某种原因,它不再管用了。我不知道有什么变化会导致这种行为。
这是我在循环中使用的代码:
<p>
<?php
$thisblog = $current_blog->blog_id;
$user_id_from_email = get_user_id_from_string( get_blog_option($thisblog, \'admin_email\'));
$phone_number = get_user_meta($user_id_from_email, \'phone\', true);
if($phone_number!=\'\') { ?>
<?php echo $phone_number; ?>
<?php } else { ?>
<?php } ?></p>
我也尝试过:
<?php
global $current_blog;
$thisblog = $current_blog->blog_id;
$user_id_from_email = get_user_id_from_string( get_blog_option($thisblog, \'admin_email\'));
$details = get_userdata($user_id_from_email);
if ($details->nickname) echo $details->nickname;
?>
还有这个:
<?php
global $current_blog;
$thisblog = $current_blog->blog_id;
$user_id_from_email = get_user_id_from_string( get_blog_option($thisblog, \'admin_email\'));
$firm_name = get_user_meta($user_id_from_email, \'nickname\', true);
if($firm_name!=\'\') { ?>
<?php echo $firm_name; ?>
<?php } else { ?>
<?php } ?>
这没有任何回应。以下代码回显了一些数据,但似乎是针对超级管理员的:
<?php $user_info = get_userdata(1);
echo $user_info->last_name . ", " . $user_info->first_name . "\\n";
?>
有什么问题吗?
最合适的回答,由SO网友:Pat J 整理而成
根据法典,get_user_id_from_string()
已弃用,应替换为get_user_by()
.
<p>
<?php
$thisblog = get_current_blog_id(); // probably don\'t need this anymore
$admin_email = trim( get_option( \'admin_email\' ) );
$admin_user = get_user_by( \'email\', $admin_email ) );
$phone_number = get_user_meta($admin_user->ID, \'phone\', true);
if($phone_number!=\'\') { ?>
<?php echo $phone_number; ?>
<?php } else { ?>
<?php } ?></p>
我还替换了你的
get_blog_option()
使用更简单的
get_option()
, 自从
get_blog_option()
基本上是这样的
switch_to_blog()
,
get_option()
, 和
restore_current_blog()
. 由于您一直在关注当前博客中的信息
switch_to_blog()
和
restore_current_blog()
都是多余的。
如果此代码不起作用,请执行一些调试--加载项var_dump( $admin_email)
验证get_option()
取回某物等。
Edited to respond to comments
在WordPress Multisite中创建新站点时,系统会要求您提供管理电子邮件地址。该用户将被指定为站点的第一个管理员。但是,如果该用户随后从站点中删除,则
admin_email
选项未从数据库中删除。
在中检查用户列表wp-admin
页面,并确保实际上有一个管理员级别的用户,其电子邮件地址与您从var_dump( $admin_email );
呼叫如果有,请计算电子邮件地址中的字符数。我想知道您是否看到了空格问题(例如,在$admin_email
或者别的什么)。我添加了trim()
对于代码示例,我可能正在抓紧救命稻草。