我正在尝试为wordpress模板添加一些逻辑。 我想构建一个简单的if条件,它将检查变量是否等于26。 变量“$ value”必须包含一些额外的隐藏字符,因为当我回显内容时... 26出现在应该首先出现的echo字符串值之前。 因此,if条件也不起作用。 这里发生了什么,我该如何解决?
CODE:
$value=the_ID(); // a wordpress function which contains the id of the current page/post.
echo "value=(" . $value . ")";
输出:
26value=()
答案 0 :(得分:7)
这是因为the_ID()是一个模板函数:它只回显出ID;它没有归还它。您希望改为使用get_the_ID()。
答案 1 :(得分:2)
the_ID()
没有返回值,而是将其打印出来。这就是为什么你不能将它分配给该变量。
如果您可以编辑该函数,则返回该值(尽管这可能会破坏正在使用该函数的应用程序的其他部分)。或者像这样捕获它:
ob_start();
the_ID();
$value = ob_get_clean();
echo "value=(" . $value . ")";
答案 2 :(得分:2)
当您注释回声时会发生什么? 26
是否仍然出现?如果是这样,那么函数会回显它而不是返回它。
使用var_dump
打印变量的内容以进行调试:
var_dump( $value );
答案 3 :(得分:1)
看起来the_ID()
回应了ID本身。
答案 4 :(得分:1)
你可以这样做:
echo "value=(".the_ID().")";
或者如果您想分配值以便稍后在脚本中使用,请执行以下操作:
$value=get_the_ID();
echo "value=($value)";
你说你想在脚本中使用if
,这样可以起到相同的作用 -
if(get_the_ID()==26){/*do whatever*/}
如果您之前分配了它,当然也可以使用$ value == 26。
答案 5 :(得分:1)
许多人建议the_ID()
回应。你可以在这里做一些事情。
首先,查看WordPress是否具有返回ID而不是打印ID的功能(我个人不知道)。
其次,您可以重新排列代码,让它随意打印......就像这样
echo "value=(" . the_ID() . ")";
OR
echo "value=("; the_ID(); echo ")";
第三,如果你真的想在变量中使用它,你可以捕获回声输出。喜欢这个
ob_start();
the_ID();
$Value = ob_get_contents();
ob_end_clean();
echo $Value;
希望这有帮助。
答案 6 :(得分:0)
我敢打赌,你所呼唤的功能与数字26相呼应。
所以......值实际上是= null ..
所以the_ID()可能是这样的函数:
function the_ID(){
$id = 26;
echo $id;
}
ie:它不会返回任何内容,它会回应结果。 (如果你通过wordpress源代码进行追踪,你可能会确切地指出正在发生的事情......并找出the_ID()从哪个地方获取页面ID。
我快速搜索了wordpress指令:
注意:此功能显示ID 帖子,返回ID使用 get_the_ID()。使用
<?php the_ID(); ?>
所以你使用了错误的功能
使用get_the_ID()而不是the_ID()
the_ID(); //prints teh page id
$value=get_the_ID(); //returns the page_id