2

Wordpress は、「the_permalink()」と呼ばれる関数を提供します。この関数は、投稿のループ中に特定の投稿へのパーマリンクを返します。

そのパーマリンクを URL エンコードしようとしていますが、このコードを実行すると:

<?php
print(the_permalink());
$permalink = the_permalink();
print($permalink);
print(urlencode(the_permalink()));
print(urlencode($permalink));
$url = 'http://wpmu.local/graphjam/2008/11/06/test4/';
print($url);
print(urlencode($url));
?>

次の結果が HTML で生成されます。

http://wpmu.local/graphjam/2008/11/06/test4/
http://wpmu.local/graphjam/2008/11/06/test4/
http://wpmu.local/graphjam/2008/11/06/test4/
http://wpmu.local/graphjam/2008/11/06/test4/
http%3A%2F%2Fwpmu.local%2Fgraphjam%2F2008%2F11%2F06%2Ftest4%2F

出力の 2 行目、3 行目、5 行目が URL エンコードされていると思いますが、5 行目だけがそうです。考え?

4

3 に答える 3

12

ドキュメントによるとthe_permalink、パーマリンクを出力するか、それを返します。そのため、urlencodeエンコードするものが何もありません。

試してみてくださいget_permalink


[編集]

編集が少し遅れましたが、印刷枚数がそんなに問題だとは思いませんでした。

それらはすべてどこから来ているのですか:

<?php
print(the_permalink());                                // prints (1)
$permalink = the_permalink();                          // prints (2)
print($permalink);                                     // nothing
print(urlencode(the_permalink()));                     // prints (3)
print(urlencode($permalink));                          // nothing
$url = 'http://wpmu.local/graphjam/2008/11/06/test4/'; 
print($url);                                           // prints (4)
print(urlencode($url));                                // prints (5)
?>
于 2008-11-08T01:22:47.670 に答える
7

the_permalink() パーマリンクをエコー

get_the_permalink() 変数に割り当てることができるようにパーマリンクを返します。

(WordPress のほとんどの関数についても同様です。the_something() には、エコーする代わりに値を返す get_the_something() があります)

于 2008-11-12T09:45:22.160 に答える
5

@Jonathanには、その理由と、WordPressでそれを処理する方法(つまり、ジョブに適切な関数を使用する方法)があります。

文字列を返す関数がない場合の修正方法は次のとおりです。

ob_start();
the_permalink();
$permalink = ob_get_clean();
print(urlencode($permalink));
于 2008-11-08T03:27:22.987 に答える