如何将“如果字段存在”与$curauth一起使用?

时间:2011-12-23 作者:markratledge

我通过以下方法向用户配置文件页面添加了一些额外的$curauth字段:

function change_contactmethod( $contactmethods ) {

$contactmethods[\'twitter\'] = \'Twitter URL\';

// more $contactmethods go here

return $contactmethods;
 }

add_filter(\'user_contactmethods\',\'change_contactmethod\',10,1);
它们以这种方式显示在作者身上。php模板,仅当在te用户配置文件中输入链接时才显示链接:

<?php echo $curauth->twitter; ?>

但我需要做的是在显示之前确定curauth字段是否存在,因为我想将twitter URL转换为链接图像。调用$curauth->推特;如上所述,如果在用户配置文件中未输入链接,则链接图像仍会显示图像。

这就是我所尝试的,但运气不佳:

<?php $my_post_meta = get_post_meta($post->ID, \'twitter\', true);
if ( ! empty ( $my_post_meta ) )
    echo \'<a href=" \'.$my_post_meta.\' "><img src="<?php bloginfo(\\\'template_url\\\'); ?>/images/twitter.png"></a>\'; ?>
2011年12月23日更新-现在可以:

<?php if ( !empty( $curauth->twitter ) ) { echo \'<a href=" \' . $curauth->twitter . \'"><img src="\' . get_bloginfo(\'template_url\') . \'/images/twitter.png"></a>\'; } ?>

2 个回复
最合适的回答,由SO网友:Otto 整理而成

对它们使用empty()检查。

if ( !empty( $curauth->twitter ) ) {
  // do stuff 
}
这是最佳做法,因为empty可以避免属性不存在的错误。

SO网友:CookiesForDevo

get\\u post\\u meta用于帖子,不会检索作者信息。

您需要使用get\\u the\\u author\\u meta(\'twitter\');。

在这种情况下,作者。php页面:

$curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) :  get_userdata(intval($author));
    if ($curauth->twitter)  {
        echo \'<a href=" \' . $curauth->twitter . \'"><img src="\' . get_bloginfo(\'template_url\') . \'/images/twitter.png"></a>\';
    }

结束

相关推荐