我的WordPress选项面板有一个部分,用户可以在其中粘贴其徽标的URL以显示在标题中。如果输入为空白,我希望博客的标题显示在我的标题上。输入的ID是“nl_logo”,所以我在标题中添加了一个if语句。
<?php if ("nl_logo") { ?>
<img src="<?php echo get_option('nl_logo'); ?>">
<?php } else { ?>
<h1><a href="'get_site_url()' ?>"><?php bloginfo('name'); ?></a></h1>
<?php } ?>
if语句的第一部分有效。但是,当我的输入中没有保存URL时,其他任何内容都不起作用。因此,如果输入为空,如何使用PHP显示其他内容?或者有不同的更好的方法来做到这一点?例如,创建一个函数并调用结果以使用简单的PHP行显示?
答案 0 :(得分:3)
试试这个......也试着理解它。
保持既定的编码风格:
<?php $nlLogo = get_option('nl_logo'); ?>
<?php if (empty($nlLogo)) { ?>
<h1><a href="<?php echo(get_site_url()); ?>"><?php echo(bloginfo('name')); ?></a></h1>
<?php } else { ?>
<img src="<?php echo($nlLogo); ?>">
<?php } ?>
现在至少应该是有效的PHP。我不知道你使用的功能是否正确,但是如果它们应该有效。
这是一种更清洁的方法......
<?php
$nlLogo = get_option('nl_logo');
if (empty($nlLogo)) {
echo('<h1><a href="'.get_site_url().'">'.bloginfo('name').'</a></h1>');
} else {
echo('<img src="'.$nlLogo.'">');
}
?>
选项三,因为我使用三元组感觉“教学”。可能有点长,这是最好的选择,但它是另一种选择。
<?php
$nlLogo = get_option('nl_logo');
echo(empty($nlLogo) ? '<h1><a href="'.get_site_url().'">'.bloginfo('name').'</a></h1>' : '<img src="'.$nlLogo.'">');
?>
注意我切换了if / else,因为我使用的是空的,这样做感觉更干净而不是使用!empty()
答案 1 :(得分:1)
<h1><a href="'get_site_url()' ?>"><?php bloginfo('name'); ?></a></h1>
应该是
<h1><a href="<?php echo get_site_url() ?>"><?php echo bloginfo('name'); ?></a></h1>
答案 2 :(得分:0)
您正在测试字符串“nl_logo”是否为true。返回总是如此。
尝试更改您的代码:
<?php
$nl_logo = get_option('nl_logo');
if (!empty($nl_logo)):
?>
<img src="<?php echo $nl_logo; ?>">
<?php else: ?>
<h1><a href="<?php echo get_site_url() ?>"><?php bloginfo('name'); ?></a></h1>
<?php endif; ?>
答案 3 :(得分:0)
不要关闭php标签。
无论你需要编写什么html,只需在一个大的php块中将它写为echo语句。
这应该可以解决您的问题
答案 4 :(得分:0)
您可以尝试empty
方法来测试字符串是否为空。在上下文中:
if(!empty($nl_logo)) {
// stuff
} else {
// other stuff
}
答案 5 :(得分:0)
这没有意义:
if ("nl_logo")
你基本上是在说这个字符串是否存在然后继续,当然是这样做。
获取输入字符串更有意义:
$input = $_POST["postedInput"];
作为一个例子,只要你知道如何将价值转化为$input
,这并不重要。
现在,您可以使用ternary operator来确定是否要使用用户的输入,或者是否要使用默认标题:
$img = $input == "" ? bloginfo($input) : get_option($input);
取决于你的函数做什么..如果get_options返回一个字符串,那么这将有效。
无论如何,不要错误地使用PHP和HTML,它会让事情变得复杂,你会陷入糟糕的设计之中。
注意:
确保使用isset
检查输入是否实际收到。