0

这个:

echo '<br>';
$author_single = sprintf( '/%s/single.php', 'francadaval' );
echo ( $author_single );

echo '<br>';
$author_single = sprintf( '/%s/single.php', the_author_meta( 'nickname') );
echo ( $author_single );

echo '<br>';
$nick = the_author_meta( 'nickname');
$author_single = sprintf( '/%s/single.php', $nick );
echo ( $author_single );

显示这个:

/francadaval/single.php
francadaval//single.php
francadaval//single.php

我看到连接顺序受函数调用的影响,所以我尝试使用中间变量,但它不起作用。

使用点运算符代替sprintf或使用"/{$nick}/single.php"相同的功能。

该函数the_author_meta是一个 Wordpress 函数,用于从帖子的作者那里获取数据,在这种情况下必须返回作者的昵称 (' francadaval ')。

使用函数调用作者的昵称,我怎样才能得到这个工作$author_single结果是“/francadaval/single.php”?

谢谢。

4

2 回答 2

2

您应该使用get_the_author_meta而不是the_author_meta.

  • the_author_meta 显示作者元
  • get_the_author_meta 返回作者元
于 2012-09-12T11:49:44.083 回答
2

该函数似乎不是返回值,而是the_author_meta()输出值。

所以实际发生的事情是这样的:

echo '<br>';
$author_single = sprintf( '/%s/single.php', 'francadaval' );
echo ( $author_single );

/francadaval/single.php按预期输出。

echo '<br>';
$author_single = sprintf( '/%s/single.php', the_author_meta( 'nickname') );
echo ( $author_single );

内部函数the_author_meta首先运行,因此输出francadaval和返回nullsprintf然后null作为第二个参数运行,返回//single.php. 然后echo语句附加//single.php到输出(现在已经有francadaval)产生结果: francadaval//single.php

echo '<br>';
$nick = the_author_meta( 'nickname');
$author_single = sprintf( '/%s/single.php', $nick );
echo ( $author_single );

与上述情况类似,您只是将函数调用拆分为单独的行。

正如 soju 所说,在这种情况下使用的正确函数是get_the_author_meta()按预期返回值。

所以正确的代码是:

echo '<br>';
$author_single = sprintf( '/%s/single.php', get_the_author_meta( 'nickname') );
echo ( $author_single );
于 2012-09-12T12:00:02.013 回答