我的wordpress目录中有一个目录,用于某些模板应用程序
apacheWWW/wordpress/jtpc
在我的应用程序中,我想要wordpress当前用户ID
我可以在一个页面中执行此操作,但在另一个页面中我收到错误
这就是我为获取用户ID所做的工作:
require_once( '/../../wp-load.php' );
global $current_user;
get_currentuserinfo();
$user_id = $current_user->ID;
但我在这一行收到错误
require_once( '/../../wp-load.php' );
错误说
File does not exist: D:/programming/apacheWWW/wordpress/jtpc/ajaxHandlers/wp-admin, referrer: http://localhost/wordpress/?page_id=23
他想用wp-admin的剂量, 为什么他在错误的目录中寻找它, 它假设在
之下 D:/programming/apacheWWW/wordpress/
它适用于一个页面,(我正在上传文件并为此用户ID创建目录)
但是对于另一个页面,我发送ajax请求以按用户请求删除文件 所以我需要再次识别,但在那里他抛出错误
答案 0 :(得分:3)
好的,我工作了,我把
require_once( '/../../wp-load.php' );
位于页面顶部 而不是在函数
中答案 1 :(得分:2)
我的问题是我为我的插件管理员设置了一个独立的ajax控制器。 事后看来,我希望我没有,因为现在我需要特定方法的$ current_user-> ID。
使用以下代码给出了未定义的函数错误:
global $current_user;
get_currentuserinfo();
当我使用它时:
$current_user = wp_get_current_user();
我已经使用GREP来跟踪spaghetti函数调用,并且能够在我的基本控制器的ajax_request方法中使用以下包含链来获得稳定:
include APP_ROOT.'wp-includes'.DS.'meta.php';
include APP_ROOT.'wp-includes'.DS.'plugin.php';
include APP_ROOT.'wp-includes'.DS.'user.php';
include APP_ROOT.'wp-includes'.DS.'capabilities.php';
include APP_ROOT.'wp-includes'.DS.'load.php';
include APP_ROOT.'wp-includes'.DS.'functions.php';
include APP_ROOT.'wp-includes'.DS.'pluggable.php';
(我已经定义了自己的APP_ROOT,它是整个应用程序基础的包含路径。)
这消除了我的错误,但我仍然得到用户ID为0,数据为NULL,这无法解决我的问题。
当然有更好的方法可以做到这一点。有人破解了cookie或会话变量以便直接访问吗?
欢迎任何和所有建议。我知道我要求wordpress像普通的OOP / MVC代码一样工作......
此外,我已经部署了一个CodeIgniter前端,我只使用WordPress作为后端。如果您被迫使用WordPress,我强烈建议您获得最大的灵活性。前端挂钩很痛苦,真的很“hacky”。这就是我的想法:
http://jidd.jimisaacs.com/post/wordigniter-wordpress-codeigniter/
所以,如果有人对此有任何疑问,我打赌我可以提供帮助。
最好的问候,快乐的编码。
答案 2 :(得分:0)
您可能想尝试以下两行之一:
require_once STYLESHEETPATH . '/wp-load.php';
或
require_once TEMPLATEPATH . '/wp-load.php';
STYLESHEETPATH常量和TEMPLATEPATH常量之间存在细微差别。如果您正在开发子主题,则STYLESHEETPATH将是子主题路径,而TEMPLATEPATH将是父主题路径。
答案 3 :(得分:0)
这是您获得当前用户的方式:
global $current_user;
$current_user = wp_get_current_user();
之后,您可以在任意位置使用$current_user->ID
。
更多信息: