1

我的目标是在 url 中使用 php 变量来使用动态 Facebook 按钮。我想我首先尝试插入一个类似静态的按钮来测试它,但我遇到了一些问题。当我第一次加载页面时,插入FB代码后,点赞按钮正确显示。虽然,每次之后它只显示一个白色框,类似按钮内容的大小,闪烁,然后消失。

我的情况可能很独特,因为这一个 wordpress 网站,但我不使用任何 wordpress 功能,例如 post loop 或任何设计布局功能。我只是使用 wordpress 发布帖子,这些帖子被转发到我自己的数据库,然后用我自己的代码显示它们。

在我的 index.php之后<?php get_header(); ?>,我放了:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=293105884122762";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


然后在我放置的网站上的一个随机位置:

<fb:like href="mysite.com" send="false" layout="button_count" width="450" show_faces="true"></fb:like>

我知道我需要为 IE 添加 XML 命名空间,但我认为还没有必要。

如果有人有任何建议,我将不胜感激。

4

2 回答 2

2

在您的喜欢按钮所在的页面上包含以下代码行:

<script>
    if (typeof(FB) != 'undefined' && FB != null ) {
          FB.XFBML.parse();
    }
</script>

希望能帮助到你。这解决了我非常相似的问题。

于 2012-10-29T16:09:42.327 回答
0

Facebook 代码只是内联运行,因此如果它不包含在页面底部,则必须调用FB.XFBML.parse()以重新解析页面 HTML 以查找<fb:/>标签。另一种选择是将此 javascript 放在页面底部,或者更好地使用您的钩子将functions.php其包含在wp_footer.

<?php
// this function will output the facebook javascript code
function add_facebook_javascript(){ ?>
    <div id="fb-root"></div>
    <script>(function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=293105884122762";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>
<?php
}
// this will hook your function to the "wp_footer" action
add_action('wp_header', 'add_facebook_javascript');
?>
于 2012-10-29T17:32:31.073 回答