Как я могу сделать WordPressОтрисовать% 20 ​​для пробелов? - PullRequest
2 голосов
/ 22 января 2011

Я пытаюсь сделать тему WordPress, которая на 100% совместима с HTML5, и прошла через все препятствия, кроме одной.

В конце некоторых сообщений я показываю ссылку "Tweet",который использует следующий исходный код в шаблоне темы:

<a href="http://twitter.com/share?text=<?php the_title_attribute(); ?>&amp;via=ianhines&amp;url=<?php echo simple_url_shortener('','service=bit.ly+key&apikey=R_a6dc414291bb882024ddd99690f5eb61&login=ianhines&cache=no'); ?>" title="Share This Article on Twitter">Tweet</a>

HTML5 запрещает использование пробелов в URL.Они должны быть представлены как %20.Однако <?php the_title_attribute; ?> отображает безопасную версию заголовка сообщения в формате XHTML с пробелами.

Пример URL-адреса (отображается с использованием исходного кода шаблона выше):

a href="http://twitter.com/share?text=Twitter, Reblog, and Email Comments&via=ianhines&url=http://ihin.es/eCoYN9" title="Share This Article on Twitter">Tweet</a>

Можно ли каким-либо образом заставить WordPress отобразить пробелы в этой строке URL-адреса как% 20, и тем самымсделать мой сайт полностью совместимым с HTML5?

Ответы [ 4 ]

3 голосов
/ 22 января 2011

Ну, просто оберните the_title_attribute() urlencode():

/share?text=<?php echo urlencode(the_title_attribute()); ?>&amp;via=

Редактировать: Хорошо, из-за этого комментария вам понадобитсясделать что-то вроде этого:

<?php
ob_start();
the_title_attribute();
$title = ob_get_clean();
?>
/share?text=<?php echo urlencode($title); ?>&amp;via=

Edit2: Просмотр документов для the_title_attribute:

/share?text=<?php echo urlencode(the_title_attribute('echo=0')); ?>&amp;via=
2 голосов
/ 22 января 2011

Значение 0, переданное the_title_attribute(), возвращает его, а не отражает его результат.

<?php 
  $urltitle= str_replace(' ','%20',the_title_attribute('echo=0')); //value of 0 to return rather than echo result  
?> 

<a href="http://twitter.com/share?text=<?php echo $urltitle; ?>&amp;via=ianhines&amp;url=<?php echo simple_url_shortener('','service=bit.ly+key&apikey=R_a6dc414291bb882024ddd99690f5eb61&login=ianhines&cache=no'); ?>" title="Share This Article on Twitter">Tweet</a>
2 голосов
/ 22 января 2011
<?php
    $spaceurl=the_title_attribute('echo=0');
    $nonspaceurl=preg_replace('\s','%20',spaceurl);
?>

<a href="<?php echo $nonspaceurl; ?>">
    my link text
</a>

EDIT

Я добавил echo=0, чтобы вернуть текст вместо его отображения, см. the_title_attribute.

0 голосов
/ 22 января 2011

Я бы предложил использовать параметр echo для the_title_attribute() и urlencode() пробелов:

<a href="http://twitter.com/share?text=<?php echo urlencode(the_title_attribute('', '', 0)); ?>&amp;via=ianhines&amp;url=<?php echo simple_url_shortener('','service=bit.ly+key&apikey=R_a6dc414291bb882024ddd99690f5eb61&login=ianhines&cache=no'); ?>" title="Share This Article on Twitter">Tweet</a>
...