web-dev-qa-db-ja.com

動く `get_option`だけのための最小限のWordPressの負荷(ajax ...のため)

プラグインで、私はget_option()にajaxを使います。これはwp全体がロードされるために必要な時間よりはるかに長くかかります。

必要なものだけをロードするように設定するにはどうすればよいですか。 (get_option()

2
laggingreflex

一般消費者向けのもの(プラグイン、テーマなど)を作成する場合は、 admin-ajax.php のように使用するのが適切で一般的な方法です。物事を行い、あなたがエンドユーザーに選択した場合、物事を変更および修正するために必要な力を与えます。

それ以上に、あなたができることができる最善はSHORTINIT定数を使うことです。カスタムphpファイルでそれを定義し、そしてwp-load.phpを要求し、あなたがする必要があることをしなさい。 SHORTINITは、WordPressコアの大部分がロードされるのを止めます。

<?php
define('SHORTINIT', true);
require '/path/to/wp-load.php';
// you'll have the basic API here, including `get_option`. Do stuff.

これをWPコアの外側で行う場合、wp-load.phpがどこにあるのかをと推測する必要があります - あなたを導くABSPATHの内容はありません。システムを完全に制御していない限り、これは危険な賭けです。言い換えれば、これが慣習であり、一般に公開されていないものである場合は、それを試してください。それ以外の場合はadmin-ajax.phpを使用してください。

5
chrisguitarguy

もう1つの方法は、このコードをfunctions.php...を必要とせずにrequire '/path/to/wp-load.php'に(またはプラグインで)追加することですが、SHORTINITほど速くはありません。

// EXAMPLE
function MyFuncion(){
    if (isset($_POST['mynamee'])) { echo get_option('my_nm');}
}

//===================Then====================
//1) Execute directly
MyFunction();
//========OR=========
//2) Hook into the EARLIEST ACTION:  
add_action('muplugins_loaded', 'MyFunction',1);

p.sハッキングからの要求を守ってフィルタリングすることを忘れないでください!

0
T.Todua