0

我是 PHP 新手,想根据用户输入显示一些信息;在网站上创建一个包含其详细信息的无序列表。

我的 WordPress 主题中有以下脚本...

函数.php:

/* Add/remove author profile fields */
function new_contact_methods( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    $contactmethods['google_plus'] = 'Google+';
    $contactmethods['twitter'] = 'Twitter';
    $contactmethods['facebook'] = 'Facebook';
    $contactmethods['linkedin'] = 'Linkedin';   

    return $contactmethods;
}

add_filter('user_contactmethods','new_contact_methods', 10, 1);

单.php:

<ul style="margin: 0;">
    <li><a href="<?php the_author_meta('url'); ?>" target="_blank"></a></li>
    <li><a href="https://plus.google.com/<?php the_author_meta('google_plus'); ?>" target="_blank"></a></li>
    <li><a href="http://twitter.com/<?php the_author_meta('twitter'); ?>" target="_blank"></a></li>
    <li><a href="http://facebook.com/<?php the_author_meta('facebook'); ?>" target="_blank"></a></li>
    <li><a href="http://au.linkedin.com/in/<?php the_author_meta('linkedin'); ?>" target="_blank"></a></li>
</ul>

我将如何从用户配置文件设置中输出信息:

在此处输入图像描述

只有if他们将内容放入上述任何字段中。

例如,我不希望显示未放入任何字段的无序列表或列表项:

  • https://plus.google.com/example
  • http://au.linkedin.com/in/example


谢谢。

4

1 回答 1

2

Usingthe_author_meta()echo输出该值,因此除非您缓冲输出或其他内容,否则您无法真正提前检查它。相反,您可以使用get_the_author_meta. 不同之处在于它不是echoing 值,而是返回它。所以你可以看一下这个值,然后用php的empty看看是否已经填好了,所以你的代码可能是这样的

<ul style="margin: 0;">
<?php
$url=get_the_author_meta('url');
if (!empty($url))
{
?>
<li><a href="<?php the_author_meta('url'); ?>" target="_blank">
<?php the_author_meta('url'); ?></a>
</li>
<?php
}
//...

以及获取您想要的所有属性的快速方法

<?php
$metaInfo=array('url','twitter','google_plus','facebook','linkedin');
$validProperties=0;
foreach($metaInfo as $infoItem)
{
$itemValue=get_the_author_meta($infoItem);
if (!empty($itemValue))
{
$validProperties++; //increments by 1
}
}
?>
<?php
if ($validProperties > 0)
{ //meaning we found at least 1
?>
<ul style="margin: 0;">
<?php
foreach($metaInfo as $infoItem)
{
$itemValue=get_the_author_meta($infoItem);
if (!empty($itemValue))
{
?>
<li>
<a href="<?php the_author_meta($infoItem); ?>" target="_blank">
<?php the_author_meta($infoItem); ?></a>
</li>
<?php
}

}
?>
</ul>
<?php
}
else
{
//else we found none so display nothing! or do something like
echo "no data found!";
}
?>
于 2013-10-16T03:11:28.133 回答