问候每个人,
我目前正在使用Wordpress作为我的CMS,并利用Facebook的Graph API为用户帐户/注册“东西”。
我的问题是,当Wordpress编译多个php文件以输出单个网页时,我如何使用Facebook的PHP SDK(在此处找到:http://github.com/facebook/php-sdk/)?换句话说,Wordpress的模板 header.php + index.php + footer.php =您在www.example.com上看到的内容< / p>
如果我在 HEADER.PHP 中创建我的Facebook应用程序实例,我将如何在 INDEX.PHP 和 FOOTER.PHP中引用它们< /强>
提前致谢!
-----示例代码---
header.php中的
<?php
require '/facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxx',
'cookie' => true,
));
?>
index.php中的
<?php
$session = $facebook->getSession();
?>
答案 0 :(得分:3)
如果您在$facebook
中设置header.php
, 将无法<{1}}访问它,除非您将其全球化。
这是因为index.php
是通过函数header.php
加载的,它会缩小所有非全局变量的the scope。
因此,您可以全球化get_header()
或,因为您需要$facebook
的单个实例,我强烈建议您使用singleton helper function;
Facebook
注意:如果您使用的是PHP5,则无需担心通过引用返回。
答案 1 :(得分:1)
将facebook客户端包含在header.php文件中并创建一个实例:
$facebook = new Facebook('API', 'SECRET');
然后,您可以从index.php文件甚至footer.php文件或包含header.php的任何其他文件中访问facebook客户端实例$facebook
。
答案 2 :(得分:1)
按顺序处理PHP,您需要确保在header.php
中调用之前包含index.php
。你可能总体上有这样的东西:
在index.php中
<?php
// blah blah other code
$session = $facebook->getSession();
// blah blah more code
include('header.php');
当然可以理解为:
<?php
// blah blah other code
$session = $facebook->getSession();
// blah blah more code
require '/facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxx',
'cookie' => true,
));
当您查看$facebook
尚不存在的整体代码时,您可以看到。
将var_dump($facebook);
添加到header.php的末尾(在您设置$facebook
之后,还有一个到index.php的开头(在您尝试使用$facebook
之前)
另一件事可能是你调用Facebook
Graph API无法正常工作并返回false或其他内容。如果var_dump
存在并且未正确连接(或类似内容),则$facebook
输出将相同,但如果您在设置之前尝试访问$facebook
,则会有所不同它(一个将是NULL
并将生成一个E_NOTICE
,另一个将是一个Facebook对象 - 或者从Facebook Graph API调用返回的任何内容。)
答案 3 :(得分:0)
考虑使用已实现此功能的Wordpress Facebook Connect插件。