Wordpress标题中的&符号打破了我在社交媒体链接中的份额

时间:2013-12-09 06:15:20

标签: wordpress post twitter ampersand

我希望得到一些帮助我解决一些令我疯狂的编码问题。我最好写“&”而不是在我的wordpress帖子标题中的“和”。但写出&符号会破坏我们在twitter,facebook和google-plus上的帖子分享链接。 Facebook能够实际显示链接(虽然它取出了标题中的&符号),但是Twitter完全失败了,并且google-plus也是如此。

这是共享链接的代码:

<ul>
    <li class="video-twitter"><a target="_blank" href="http://twitter.com/share?text=<?php the_title(); ?>&amp;url=<?php the_permalink(); ?>" title="Share on Twitter">Twitter</a></li>
    <li class="video-facebook"><a target="_blank" href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>" title="Share on Facebook">Facebook</a></li>
    <li class="video-google"><a target="_blank" href="https://plus.google.com/share?url=<?php the_permalink();?>&t=<?php the_title(); ?>" title="Share on Google+">Google+</a></li>
</ul>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

我今天遇到了同样的问题而且很容易修复。所有的&符号都是由WordPress作为实体提供的,这意味着如果你使用get_the_title()或the_title()&符号是这样的:&amp; #038;

您可以使用html_entity_decode()对此进行解码,之后您必须使其与URL友好,这可以使用urlencode()来完成。

将它们结合起来你会得到这个:

<?php print urlencode( html_entity_decode( get_the_title() ) ); ?>

或者以“更清洁”的方式做,并在你的functions.php主题文件中创建这个功能:

function themeprefix_social_title( $title ) {
    $title = html_entity_decode( $title );
    $title = urlencode( $title );
    return $title;
}

这样您就可以在主题中调用此功能,该功能可用于所有社交网络:

<?php print themeprefix_social_title( get_the_title() ); ?>

应用于您的示例时:

<ul>
    <li class="video-twitter"><a target="_blank" href="http://twitter.com/share?text=<?php print themeprefix_social_title( get_the_title() ); ?>&url=<?php the_permalink(); ?>" title="Share on Twitter">Twitter</a></li>
    <li class="video-facebook"><a target="_blank" href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php print themeprefix_social_title( get_the_title() ); ?>" title="Share on Facebook">Facebook</a></li>
    <li class="video-google"><a target="_blank" href="https://plus.google.com/share?url=<?php the_permalink();?>&t=<?php print themeprefix_social_title( get_the_title() ); ?>" title="Share on Google+">Google+</a></li>
</ul>