2012-10-29 85 views
1

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

我的情况可能是独一无二的,因为这个是一个wordpress网站,但我没有使用wordpress的任何功能,例如后循环或任何设计版式功能。我只是使用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名称空间,但我认为这不是必需的。

如果有人有任何建议,我会很感激他们。

+0

问题:变量'js.src'的URL声明是否正确?如果你想通过GET来传递参数,它们会用问号与普通地址分离。 – reporter

回答

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'); 
?> 
+0

这两个答案都是完全有道理的,我希望它能够工作,但仍然没有运气。我会继续尝试,但我愿意接受任何其他可能的建议。 – iRector

+0

我会检查一些真实的源代码,并回复给您 – doublesharp

+0

@iRector - Facebook做了一些修改,请尝试上面的(它错过了fb-root div),如果这样做不起作用,您可能需要将其立即插入身体标签后面。让我知道,我可以根据需要进行更新。 – doublesharp

2

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

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

希望它帮助。这已经解决了我非常类似的问题。

+0

这两个答案都是完全合理的,我期望它能够工作,但仍然没有运气。我会继续尝试,但我愿意接受任何其他可能的建议。 – iRector