if / else in return tag

时间:2017-02-17 12:42:18

标签: php

我对PHP很陌生,所以这可能是一个愚蠢的问题。

我有一个if / else,我需要在return标签中使用,但它不起作用。我应该如何构建这个?

这是标记:

return '… <div class="read"><a class="read-more hvr-icon-forward" href="'. get_permalink($post->ID) . '">' . "CODE HERE" . '</a></div>';

这是我需要在&#34; CODE HERE&#34;

中输出的内容
$status = of_get_option('read_more');
if (empty($status)) {
    echo 'Sorry, the page does not exist.';
} else {
    _e($status);
}

https://jsfiddle.net/33nv1xpa/1/

3 个答案:

答案 0 :(得分:1)

我是否做得对,你有一个像

这样的结构
return *SOME_STRING* SOME CODE WITH ";" *SOME_STRING*

我强烈建议,创建一个包含要返回的文本的字符串var,最后只返回该字符串。

$echoCode   = result from CODE HERE
$returnText = "<div>blalba</div>" . $echoCode . "<div>blabla</div>";

return $returnText;

答案 1 :(得分:0)

您可以使用ternary operator并将变量赋值放在括号中来完成。

return "...". (($status = get_option('status')) ? $status : _e()) ."...";

另外,我建议将此功能放在一个函数中,或者至少放在一个普通的变量中。 像这样的编码使整个事情变得不可读。

此外,您正试图在在线解析器中运行wordpess函数,这无疑会错过这些功能!

答案 2 :(得分:0)

您可以使用Php eval函数(http://php.net/manual/en/function.eval.php)。它将字符串计算为Php代码。因此,您可以将eval的结果分配给名为$ code_here的变量:

$code_here = "$status = of_get_option('read_more');
if (empty($status)) {
    echo 'Sorry, the page does not exist.';
} else {
    _e($status);
}";

$code_here = eval($code_here);