我希望得到一些帮助我解决一些令我疯狂的编码问题。我最好写“&”而不是在我的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(); ?>&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>
非常感谢任何帮助!
答案 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>