我仍然是PHP的初学者,很抱歉,如果这是一个愚蠢的问题=)
我正在尝试做的是在WordPress博客中,在我的RSS源中插入一个包含多个值(“成分”)的自定义字段。 (我还有其他帖子不是食谱,这就是为什么标题“成分”和“说明”都在if语句中。)这是我到目前为止的整个代码:
<?php
function insertIngredients($content) {
/* get ingredients into variable $recipeStuff */
$recipeStuff =
if ($ingredients = get_post_custom_values('ingredients')) {
echo '<h3>Ingredients</h3><ul id="ingredients">';
foreach ( $ingredients as $key => $value ) {
echo '<li>';
echo $value;
echo '</li>';
}
echo '</ul><h3>Instructions</h3>';
}
/* add before content */
$content = $recipeStuff . $content;
return $content;
}
/* Do it! */
add_filter('the_excerpt_rss', 'insertIngredients');
add_filter('the_content_rss', 'insertIngredients');
?>
但是得到一个“意外的IF”错误,所以我想我不能把所有这些都放在$ recipeStuff变量中=)我只是想不出怎么把它放在那里。
(如果重要的话,IF语句正是我在页面本身的帖子中使用的,它完美无缺!)
非常感谢您的任何帮助! = d
更新<!/强>
这就是我现在在代码中的内容:
function insertIngredients($content) {
/* test for presence of ingredients & set variables */
if ($ingredients = get_post_custom_values('ingredients')) {
$heading1 = '<h3>Ingredients</h3><ul id="ingredients">';
foreach ( $ingredients as $key => $value ) {
$ings = '<li>' . $value . '</li>';
}
$heading2 = '</ul><h3>Instructions</h3>';
}
/* if no ingredients, variables are empty */
else { $heading1=''; $ings=''; $heading2=''; }
$recipeStuff = $heading1 . $ings . $heading2 ;
/* add before content */
$content = $recipeStuff . $content;
return $content;
}
/* Do it! */
add_filter('the_excerpt_rss', 'insertIngredients');
add_filter('the_content_rss', 'insertIngredients');
我不再收到错误消息,但这些成分未显示在RSS Feed中。我不确定是不是因为代码仍有问题,或者需要一段时间才能产生影响(虽然我不知道为什么会这样)?我使用FeedBurner,如果这有所不同。
非常感谢你的回答,大家。我将尝试一些不同的东西,然后再次更新。谢谢! =)
答案 0 :(得分:8)
为什么不把它转过来?
if (condition) {
$recipeStuff = '';
}
else
{
$recipeStuff = '';
}
答案 1 :(得分:7)
即使这个问题已经过时了,IMO仍然缺少最佳答案,即三元运算符:
<?php
$recipeStuff = ( HERE CHECK FOR INGREDIENTS ) ? SOMETHING : SOMETHING ELSE ;
?>
如果检查为true, $recipeStuff
将获得值SOMETHING
,否则将获得SOMETHING ELSE
答案 2 :(得分:2)
不,那不是真的那样。 它应该是(忽略函数头和其他):
<?php
if ( HERE CHECK FOR INGREDIENTS ){
$recipeStuff = SOMETHING ;
} else {
$recipeStuff = SOMETHING ELSE ;
}
?>
因此,你不能使用if(在这种形式下)像内联函数。有一个内联替代方案,但很难在其中使用循环。 Echo将始终输出一些输出缓冲区。 Id est,你不能使用像“$ myVar = echo'thing';”这样的回声。只是在条件内做一个任务。
答案 3 :(得分:2)
最简单的方法是保持简单,只需
if (!yourcondition) {//if its not true
$recipeStuff = '';
}
else{//else if it is true
$recipeStuff = '';
}
答案 4 :(得分:1)
显然,这是不正确的PHP语法。你需要的是一个连接字符串(li等)并返回它的变量。
如果在$ recipeStuff变量之外,你应该移动。
答案 5 :(得分:1)
我认为这些是问题行
$recipeStuff =
if ($ingredients = get_post_custom_values('ingredients')) {
这是做什么的?或者它应该具有什么价值?
$recipeStuff =
试试这个
if ($ingredients == get_post_custom_values('ingredients')) {
当使用等号来比较值时,它应该是双==或三=== 使用一个等号是你如何设置值
$one = 1; // assigns the value 1 to the variable $one
// Compares the values
if($one == 1) {
echo "True<br />";
} else {
echo "False<br />";
}