【问题标题】:File Included In Wordpress Header Not Available In Body包含在 Wordpress 标题中的文件在正文中不可用
【发布时间】:2014-04-13 18:28:15
【问题描述】:

我在 Wordpress header.php 中包含了 Facebook SDK,在这个文件中,SDK 可以正常工作。但是,当我尝试在使用标头的页面中使用 SDK 时,我收到错误消息,指出未定义某些对象等。就好像从未包含该文件一样。

基本上,我可以让用户的 FB 信息显示在页面的标题上,但没有其他地方。

编辑: 这是 header.php 文件的一部分:

<?php
include_once('facebook-php-sdk/src/facebook.php');
$config = array();
$config['appId'] = '***********';
$config['secret'] = '***********************';
$config['cookie'] = true;
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$user_profile = $facebook->api('/me','GET');

echo $fbUsername = $user_profile['name'];//WORKS HERE
?>

但在页面上:

<?php
get_header();
echo $fbUsername;//not working;
?>

【问题讨论】:

  • 你要显示一些相关的代码
  • 已更新。当我尝试在页面上回显 $fbUsername 时,我收到错误消息:“必须使用活动访问令牌来查询有关当前用户的信息”。

标签: php facebook wordpress facebook-graph-api facebook-php-sdk


【解决方案1】:

我认为您在拥有的每个文件中都包含此标头。所以,每次都会创建一个新的 facebook 对象——新的 facebook 会话可能也是如此——这是错误的做法!

错误:

"必须使用活动访问令牌来查询当前用户的信息

是由于会话中没有当前用户,因此您无法调用任何 api,例如:/me...

所以不要一次又一次地创建 FB 对象,而是只创建一次 - 在应用程序启动时。使用相同的$facebook,然后是主要的东西——会话/活动访问令牌可以随时过期,所以你应该检查一下:

$user_id = $facebook->getUser();
if($user_id)
  $user_profile = $facebook->api('/me','GET'); 
else
   // get the login url and create new session 

(您可以按照 sdk 示例进行相同的操作)


您还可以将您正在使用的名称或其他 fb 信息保存在会话变量中一次,就像-

session_start();
$_SESSION['fb_user_name'] = $user_profile['name'];

而不是一次又一次地获取它们。

【讨论】:

  • 我在每页的开头都包含一次标题。所以我确信它只在我网站的任何位置加载一次。我正在做 $user_id 检查,它在 header.php 中返回 true,但在页面文件上失败。我认为问题不在于访问令牌。这是 $facebook 对象出现在页面上未定义,即使它在标题中工作。我通过将 $facebook obj 设置为 global 在某种程度上解决了这个问题,但我仍在寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 2015-01-25
  • 2015-08-10
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多