这个PHP回声发生了什么,我该如何解决?

时间:2010-01-31 22:38:59

标签: php wordpress

我正在尝试为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=()

7 个答案:

答案 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

http://codex.wordpress.org/Template_Tags/the_ID