2017-02-17 3 views
0

Я довольно новичок в PHP, так что это, наверное, глупый вопрос.If/else in return tag

У меня есть if/else, который мне нужно использовать в теге return, но он не работает. Как мне это структурировать?

Это тег:

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

Это то, что мне нужно вывести в "КОД ЗДЕСЬ"

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

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

+2

Сначала постройте строку, * затем * верните ее. – David

ответ

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; 
0

Вы можете сделать это с помощью ternary operator и положить назначение переменной в parenthenses.

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

В других случаях я предлагаю поместить эту функциональность в функцию или, по крайней мере, в обычную переменную. Кодирование, как это делает все это нечитаемым.

Кроме того, вы пытаетесь запустить функцию wordpess в онлайн-парсер, который, несомненно, пропустить эти функции!

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);