【问题标题】:use wordpress functions outside of wordpress folder在 wordpress 文件夹之外使用 wordpress 功能
【发布时间】:2015-07-27 05:49:38
【问题描述】:

我在 wordpress 目录之外有一个脚本,我需要检查用户当前是否以管理员身份登录。

网站结构是:

/home/myscript.php /home/wordpress/check_if_admin.php

check_if_admin.php 内容为:

require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
global $current_user;
get_currentuserinfo();
$user_id = $current_user->ID;
//usually admin user id is 1 if its not working check admin user id from wp_users table
if($user_id == 1) {
  $admin = "1";
}

$is_admin = current_user_can( 'manage_options' );
if ( current_user_can( 'administrator' ) ) {
  $admin = "1";
}
if (!empty($_GET['debug'])) {
  echo "UID $user_id / ADM $admin";
}

如果我从/home/wordpress/check_if_admin.php 运行脚本,它就可以工作。 但是如果我尝试在myscript.php 中包含check_if_admin.php,它就不起作用,$user_id / $admin 总是为零。

如何查看myscript.php 中的管理员状态?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    尝试使用绝对路径添加。

    require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
    

    【讨论】:

    • 不会改变任何东西
    • $user_id = $current_user->ID; 仅在您登录时有效。
    • 我已登录。如果从 wordpress 文件夹运行,脚本将返回 1,但只要我将脚本放在 wordpress 文件夹之外,它就会返回零
    • 我已经用require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); 测试了你的代码,它工作正常
    • 在wordpress文件夹内或文件夹外添加时,能否同时添加相对路径?
    【解决方案2】:

    如果你的脚本在wordpress目录之外,你需要在你的wp-config.php中require_once(ABSPATH . 'wp-settings.php');之前添加下面几行

    /** Set cookie path so we can access login from anywhere */
    define('ADMIN_COOKIE_PATH', '/');
    define('COOKIEPATH', '/');
    define('SITECOOKIEPATH', '/');
    

    这是因为默认情况下,您的登录 cookie 只能访问您的 wordpress 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多