如何使 WordPress 的 为空间渲染 %20?

发布于 2024-10-13 08:44:41 字数 894 浏览 3 评论 0 原文

我正在尝试渲染一个 100% HTML5 兼容的 WordPress 主题,并且已经解决了除一个障碍之外的所有问题。

在某些帖子的末尾,我显示了一个“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。然而, 呈现帖子标题的 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?

I'm trying to render a WordPress theme that is 100% HTML5 compliant, and have managed my way through all but one snag.

At the end of certain posts I show a "Tweet" link, which uses the following source code in the Theme template:

<a href="http://twitter.com/share?text=<?php the_title_attribute(); ?>&via=ianhines&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 forbids having spaces in URLs. They must be rendered as %20. However, <?php the_title_attribute; ?> renders an XHTML safe version of the Post Title with spaces maintained.

An example URL (rendered using the template source code above):

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>

Is there any way I can force WordPress to render the spaces in this URL string as %20, and thereby make my site fully HTML5 compliant?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

明媚如初 2024-10-20 08:44:41

好吧,只需用 urlencode() 包裹 the_title_attribute()

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

编辑:好的,由于该评论,您需要执行以下操作:

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

编辑2:查看the_title_attribute 的文档:

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

Well, just wrap the the_title_attribute() with urlencode():

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

Edit: Ok, due to that comment, you'd need to do something like this:

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

Edit2: Looking at the docs for the_title_attribute:

/share?text=<?php echo urlencode(the_title_attribute('echo=0')); ?>&via=
败给现实 2024-10-20 08:44:41

传递给 the_title_attribute() 的值 0 会使其返回而不是回显其结果。

<?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; ?>&via=ianhines&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>

A value of 0 passed to the_title_attribute() makes it return rather than echo it's result.

<?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; ?>&via=ianhines&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>
弱骨蛰伏 2024-10-20 08:44:41
<?php
    $spaceurl=the_title_attribute('echo=0');
    $nonspaceurl=preg_replace('\s','%20',spaceurl);
?>

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

编辑

我添加了echo=0来返回文本而不是显示它,请参阅the_title_attribute

<?php
    $spaceurl=the_title_attribute('echo=0');
    $nonspaceurl=preg_replace('\s','%20',spaceurl);
?>

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

EDIT

I added echo=0 to return the text instead of displaying it, see the_title_attribute.

有木有妳兜一样 2024-10-20 08:44:41

我的建议是使用 the_title_attribute()urlencode() 空格的 echo 参数:

<a href="http://twitter.com/share?text=<?php echo urlencode(the_title_attribute('', '', 0)); ?>&via=ianhines&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>

My suggestion would be to use the echo param of the_title_attribute() and urlencode() the spaces:

<a href="http://twitter.com/share?text=<?php echo urlencode(the_title_attribute('', '', 0)); ?>&via=ianhines&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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文