WordPress, PHP, ошибка кодирования URL

WordPress предоставляет функцию под названием «the_permalink ()», которая возвращает, как вы уже догадались, постоянную ссылку на заданный пост в цикле сообщений.

Я пытаюсь URL кодировать, что permalink и когда я исполняю этот код:

<?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 такова. Мысли?

Согласно документам, the_permalink печатает постоянную ссылку и возвращает ее. Таким образом, urlencode не получает ничего для кодирования.

Попробуйте get_permalink .


[ EDIT ]

Немного поздно для редактирования, но я не понимал, что подсчеты печати были такой проблемой.

Вот откуда они все:

 <?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) ?> 

the_permalink() перекликается с постоянной the_permalink()

get_the_permalink() возвращает постоянную ссылку, поэтому ее можно назначить переменной.

(то же самое происходит с большинством функций в WordPress: the_something () имеет get_the_something (), чтобы возвращать значение вместо эхо-сигнала)

@Jonathan имеет причину, почему и как вы должны иметь дело с ним в WordPress (т. Е. Использовать правильную функцию для задания).

Вот как это исправить, когда нет функции, которая возвращает строку:

 ob_start(); the_permalink(); $permalink = ob_get_clean(); print(urlencode($permalink));