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関数であり、この場合、作成者のニックネーム(' francadalval ')を返す必要があります。

$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次に、を2番目の引数として実行しnull、を返し//single.phpます。次に、ステートメントが出力(現在はすでに含まれています)にecho追加され、結果が生成されます。 //single.phpfrancadavalfrancadaval//single.php

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

上記のシナリオと同様に、関数呼び出しを別々の行に分割しただけです。

焼酎が述べているように、この場合に使用する正しい関数は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 に答える