特定のサブディレクトリのファイルが何回ダウンロードされたかを数え、誰がそれをダウンロードしたのかを追跡する必要があります。
これを行うにはPhpファイルを使用しています。WPファイルではありませんが、現在のユーザー(認証されている場合)とその役割(および場合によっては上限)を取得するにはWPを含める必要があります。
見て あなたのウェブサイトとWordPressの統合 私は最初に使いました:
define('WP_USE_THEMES', false);
require('../wp-blog-header.php');
しかし、それから私はダウンロードに問題があり、エラー404 (file not found)
を返しました。
同じコーデックスの記事の下の方に幸いなことに、この提案があります。 wp-blog-header.phpを含む外部ページの誤った404ヘッダを修正する
提案に従って、私はinit
を使いました。
require_once("../wp-config.php");
$wp->init();
それでも、$GLOBALS
を検討することで、必要以上に多くのことが行われ、残っていると思います。
私はダウンロードにreadfile
を使用しています、ファイルサイズはおそらくhugeです、ユーザーチェックは以前に行われています、最小のWPをできるだけ早く含めてリリースするのが理想的です。ユーザーチェックの直後、readfile
の前のWPリソース。
それで、現在のユーザ、その役割(caps?)だけをチェックするための最小限のWPを含めて、それを解放/解放する方法があります。
私はまたwp-load.php
が使われているのを見て周りを探し回っていますno noこれらのすべてのwp-*
を直接含んでいるが、を含むについて私の場合ではなく、プラグインで、直接インクルードすることについてまだ心配する必要がありますか?
Wp- *ファイルを直接ロードすることについてのno noは、WordPressのプラグインやテーマを開発している場合には妥当ですが、必要な外部コードを開発している場合WP(そしてそれはあなたのケースのようです)あなたよりもそのファイルを要求しなければなりません、選択肢はありません。
WordPressのURLまたは完全なWordPressフロントエンドを処理する必要がある場合はwp-blog-header.php
を含める必要がありますが、wp-load.php
を含むWordPress機能が必要である場合は$wp->init();
を使用する必要はありません。
また、SHORTINIT
定数をtrueに設定するとロードが速くなりますが、そうすることでWordPressのいくつかの機能が利用できなくなり、ユーザーチェックもその1つになります。
ただし、必要なファイルが少なく、いくつかの関数を呼び出すと、ユーザー機能を確認できます。
<?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;
}