最小限のWordPress環境を読み込む


12

私は自分のWebサイト用にWPとは別の独自のアップロードサービスを作成しましたが、WPを使用して低レベルのdb関数とユーザー検証を提供しています。そのために、メインスクリプト(Uploadify)にwp-load.phpを含めますが、そうするとサーバーのメモリに不要なコンポーネントがいっぱいになるようです。そのおかげで、インストールされているWPプラグインをポイントしているように見えるエラーがスクリプトに表示されます。

コアWPコンポーネントのみをロードしてプラグインを無視するにはどうすればよいですか?これは可能ですか?


1
BackPressをチェックしてください
soulseekah

回答:


9

プラグインを完全に無効にすると、多くの利点が失われます。

さらに進んで投稿やリンクなどを削除するワードプレスのディストリビューションがありますが、それらは常にワードプレスのコアに遅れをとり、長く存続しない傾向があります。

できることは次のとおりです

短い初期化

これをwp-config.phpに入れます:

define( 'SHORTINIT', TRUE );

または、ワードプレスでロードする前にどこかで定義すると、ロードプロセスが削減され、最小限のコア機能に戻されます。

二次軽量インストール

必要なプラグインとテーマ(存在する場合)のみを使用して、2番目のワードプレスインストールをセットアップします。次に、同じwp-contentディレクトリーとデータベース値を使用するようにwp-config.phpを構成します。

バックプレス

WordPress、とりわけBBpressとglotpressは、BackPressライブラリを中心に構築されています。WordPressの代わりにこれを使用して作業を行うことができますが、多数のAPIと機能が欠落しているか、再実装/移植が必要な場合があります

オプション表

また、WordPressがオプションテーブル全体をメモリにロードしてクエリを削減することにも注意してください。大きな値をそこに保存すると、パフォーマンスに影響します。

早期終了

また、WordPressのロードプロセスの以前の関数にフックして、WordPressが完了する前にPHPプロセスを終了することもできますが、それがどれほど安全かについてはアドバイスできません。

プラグインを選択的にロードする

プラグインの選択的な読み込みに関するこの記事もありますが、WordPressコアファイルへのハックが必要です。


+1 「二次軽量インストール」を試したことはありますか?
カイザー2012

私は同様のことを行いましたが、この目的のためではありませんが、ほとんどのユースケースはマルチサイトの方が適しています。主にそれを使用して、コンテンツを共有する開発インストールを一緒に実行できるようにします
トムJノーウェル

8

BackPressを使用しますが、開発が小規模で、デフォルトのインストールとconstを介した小さなソースを使用しています。

で参照してください wp-settings.php

// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
    return false;

でconst SHORTINITをtrueに設定してwp-config.php、高速実行を確認します。 define( 'SHORTINIT', TRUE );

これらはあなたが得るファイルです:

// All are located in ABSPATH.WPINC
'/load.php'
'/default-constants.php'
'/version.php'
'/compat.php'
'/functions.php'
'/class-wp.php'
'/class-wp-error.php'
'/plugin.php'
'/default-filters.php'
'/pomo/mo.php'

// Only Multisite
'/ms-blogs.php'
'/ms-settings.php'

6

作成is_user_logged_in()current_user_can()作業のために、私はここで同様の答えを見つけまし (カントコメント)比較はここの答えと一致します。

define('SHORTINIT', true)+ require('wp-load.php')+を手動で使用すると、次のものが含まれます。

ページロード:1.05 sek- インクルードファイル:43ファイル

比較:ONLYの 使用require('wp-load.php')

ページロード:1.35 sek- インクルードファイル:419ファイル

時間差(0.3 sek)はインストールやPHPエンジンとは異なる場合がありますが、1つのページロードで多くのリクエストを検証している間に、合計が発生します!/ @ Anna Ericson

WPにインストールされたディレクトリへの相対呼び出しを使用することは良い考えでした。次のようなWordpressカスタムプラグイン「ROOT」から:

$wordpress = '../../../wp-load.php';

次に、私のプラグインindex.php内:

define('SHORTINIT', true);
include_once $wordpress;

require_once ( ABSPATH . WPINC . '/class-wp-user.php' );
require_once ( ABSPATH . WPINC . '/class-wp-roles.php' );
require_once ( ABSPATH . WPINC . '/class-wp-role.php' );
require_once ( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/formatting.php' );
require_once ( ABSPATH . WPINC . '/capabilities.php' );
//require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
require_once ( ABSPATH . WPINC . '/user.php' );
require_once ( ABSPATH . WPINC . '/meta.php' );

wp_cookie_constants();

require_once ( ABSPATH . WPINC . '/vars.php' );
require_once ( ABSPATH . WPINC . '/kses.php' );
require_once ( ABSPATH . WPINC . '/rest-api.php' );
require_once ( ABSPATH . WPINC . '/pluggable.php' );

この後、ユーザー検証が機能します。元のコードの@Anna Ericsonの最後の言葉に感謝します。

1つまたは2つの要求で実行する他のタスクの場合、他の必要なファイルを追跡することは、0.3 sekの価値がない場合がありますSHORTINIT 定数をスキップして手動で乱雑にします。


1
これは、これまでで最もクリーンな方法です。インストール時に制限されたイメージをロードするajax-callsで正常に動作しています。
Jonas Lundman、2018年

@cavameta SHORTINITでWoocommerceを中華鍋にインポートする方法を教えてください。
webmastx

2

試しましたdefine('SHORTINIT', true);か?私はそれを自分でテストしていませんが、特にデータベースを処理することだけが必要な場合は、十分な機能を保持しながらWPコアのごく一部をロードするようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.