Wordpress, PHP, проблема кодирования URL - PullRequest
1 голос
/ 08 ноября 2008

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

Ответы [ 3 ]

12 голосов
/ 08 ноября 2008

Согласно документам, 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)
?>
7 голосов
/ 12 ноября 2008

the_permalink() эхо постоянная ссылка

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

(то же самое относится и к большинству функций в WordPress: the_something () имеет get_the_something () для возврата значения вместо его отображения)

5 голосов
/ 08 ноября 2008

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

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

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