有一种方法可以包括一个最小的WP,用于仅检查当前用户及其角色(CAPS?)然后释放/释放它?

时间:2014-04-26 作者:Alex

我需要计算特定子目录中的文件被下载的次数,并跟踪下载者。

我使用的是一个Php文件,它不是WP文件,但我需要包含WP以获取当前用户(如果经过身份验证)及其角色(可能还有caps)。

正在查看Integrating WordPress with Your Website 我第一次使用:

define(\'WP_USE_THEMES\', false);
require(\'../wp-blog-header.php\');
但我下载时遇到了问题,返回了一个错误404 (file not found).

幸运的是,我在同一法典文章的页脚处有以下建议:Fixing false 404 headers on external pages including wp-blog-header.php

按照我刚才的建议init 这在我看来已经足够了:

require_once("../wp-config.php");
$wp->init();
尽管如此$GLOBALS 我想还有很多事情要做,还有很多事情要做。

我正在使用readfile 对于下载,文件大小可能很大,用户检查是在之前完成的,理想的做法是尽快包含最小的WP,并在用户检查之后,在readfile.

因此,有一种方法可以包含一个最小的WP,以便只检查当前用户及其角色(CAP?)然后释放/释放它?

我也看到了wp-load.php 正在使用,四处查看/搜索发现了很多关于包括所有这些wp-* 直接,但所有关于包含插件的结果,而不是我的情况,我还需要担心直接包含吗?

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

当您开发WordPress插件或主题时,关于直接加载wp-*文件的“否”是合理的,但如果您开发的外部代码需要wp(这似乎是您的情况),那么您必须要求该文件,没有其他选择。

考虑包括wp-blog-header.php 当您需要处理WordPress URL或完整的WordPress前端时需要,但当您需要WordPress功能时,包括wp-load.php 更好更快,无需$wp->init();.

此外,设置SHORTINIT 常量设置为true可以加快加载速度,但WordPress的某些功能不可用,用户检查就是其中之一。

但是,只需要几个文件,并调用几个函数,就可以检查用户功能:

<?php
define( \'SHORTINIT\', 1 );
require \'../wp-load.php\'; // adjust according to your paths
require ABSPATH . WPINC . \'/formatting.php\';
require ABSPATH . WPINC . \'/capabilities.php\';
require ABSPATH . WPINC . \'/user.php\';
require ABSPATH . WPINC . \'/meta.php\';
require ABSPATH . WPINC . \'/post.php\';
require ABSPATH . WPINC . \'/pluggable.php\';
wp_plugin_directory_constants();
wp_cookie_constants();

if( current_user_can( \'manage_options\' ) ) { // check capability
  $GLOBALS = array(); // free some memory

  // require your file here

} else {
  header("HTTP/1.1 401 Unauthorized");
  exit;
}

结束

相关推荐

如何在不交换wordpress-core的情况下更改wp-include/soronomy.php中的值

我遇到的问题是,即使用户登录,私有帖子的标签也不会显示在小部件标签云中。原因似乎是函数中“post\\u status”的值_update_post_term_count 在wp包括/分类中。php。至少当我将此值更改为“private”时,会显示私有标记。我的问题是:如何在不编辑分类法的情况下更改此值。php,那么核心呢?这是已更改的功能(在**...**):function _update_post_term_count( $terms, $taxonomy ) { global $w