私はWPDBを使ってWordpressに接続しようとしています。それはとても美しいクラスで、wp-config.phpで指定された設定があるので、もう一度指定する必要はありません。スタンドアロンスクリプトでWPDBを使用していますか?
このWPDBインスタンスを使用する必要があるバックグラウンドで実行するために、メインのwordpressから小さな切り離されたスクリプトを書きます。
どうすればこのファイルをアーカイブできますか?
何か助けていただければ幸いです。
私はWPDBを使ってWordpressに接続しようとしています。それはとても美しいクラスで、wp-config.phpで指定された設定があるので、もう一度指定する必要はありません。スタンドアロンスクリプトでWPDBを使用していますか?
このWPDBインスタンスを使用する必要があるバックグラウンドで実行するために、メインのwordpressから小さな切り離されたスクリプトを書きます。
どうすればこのファイルをアーカイブできますか?
何か助けていただければ幸いです。
のみロードのWordPressのコア機能をロードするための最良の(最速かつ最も安全な)方法は、このようなSHORTINIT
フラグを使用することです/wp-settings.php
のコードをチェックすることです。これは、この後に何がロードされないことを意味し、あなたが見ることができるように、それは物事の非常に多くのです
// Stop most of WordPress from being loaded if we just want the basics.
if (SHORTINIT)
return false;
:そこには、次のセクションを見つけます。フットプリントは、wp-load.php
をロードするだけでなく、WordPressコアのすべての組み込み関数にアクセスすることができます。例えば、/wp-includes/wp-db.php
を直接含めるのと異なります。 WPコアの多くの機能は他のファイルにも依存しており、必要なファイルを作成するためにはどのファイルを含めるべきか正確に把握するのが難しい場合があります。 SHORTINIT
には必要な依存関係が含まれているので、これについて心配する必要はありません。
たとえば、WPDBなど、必要なものを正確に把握している場合は、必要なファイルのみを高速に取り込むことができますが、SHORTINIT
はWPコアと依存関係を読み込むための安全で標準化された方法を提供します。 SHORTINIT
でWordPressはプラグイン、プラグインAPIのほとんどの部分、テーマ、テーマ機能、およびほとんどの管理機能とフロントエンド機能を読み込みません。これは、重いコードが典型的なWordPressのインストールの場所です。 ほとんどの場合、SHORTINIT
は、必要なファイルだけを含むのと比較してスピード/パフォーマンスのトレードオフが小さいと考えています。ほとんどの場合、フルロードに比べてパフォーマンスが大幅に向上します。
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
// $wpdb is available, do stuff
'wp-load.php'で十分ではありませんか? –
はい、wp-loadだけで十分です。残りの部分はすべて読み込まれます。つまり、すべてのプラグインを含むWordPressがすべて読み込まれています。 –
WordPressは実際にあなただけのdb.php
というファイルを作成し、あなたのwp-content
ディレクトリのルートにそれを保存することにより、独自のDBA(データベース抽象化レイヤ)を使用することができます。
私は、私が書いたクラスを使ってデータベースにアクセスする必要があるという問題がありました。これはWordPressには何もしませんでしたが、このスクリプトだけで新しいDBAを作成したくはありませんでした。
デフォルトWPDB
あなたは工場出荷時のパターンを使用することはできませんので、私はすぐにそれをサポートするために数行を書き、db.php
にこれを追加しました...
<?php
class DB extends wpdb
{
protected static $instance = null;
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new DB(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
return self::$instance;
}
}
$wpdb = DB::getInstance();
今からwpdb
を使用する必要がする場合むしろ恐ろしいglobal
よりも、メソッド内から
$wpdb = DB::getInstance();
:他の場所(私の場合非WordPressのクラスで)、あなたが使用することを日科技連することができます。
$ wpdbを取得する美しい方法 – hidden
うわー、どこでWordPressのDBAとdb.phpファイルについてもっと知ることができますか? – BenRacicot
この問題は、コードではまだapply_filterのようなWordPress関数が呼び出されています。私は、他の無関係のPHPファイル(またはすべてのもの)を含める必要があることを回避しようとしています。 –
次のコードを使用して、テーマフォルダの内側にある新しい.phpファイルで$ wpdbを使用することができます。
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = $_SERVER['REQUEST_URI'];
$my_url = explode('wp-content' , $url);
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
include_once $path . '/wp-config.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
私が見る限りでは、これはWordPressのすべてをロードせずに、wpdbを使うための最小限のコードをロードする唯一の方法です。 –
以下の2つのステップで十分です。
その後、このページで使用できるグローバル変数です。 wp-blog-header.phpの正しいインクルードパスを指定してください。複数のファイルを含める必要はありません。
あなたはrequire_once( '../../../ wp-load.php');
あなたはすべてのワードプレスクラスフックとすべてが読み込まれます。今すぐグローバル$ wpdbを使用してデータベースでinterectを開始することができ、wpdbインスタンスが起動されます
wp-load.phpファイルをスクリプトに含めるだけです。この詳細については
define('SHORTINIT', true);
require('/path/to/wp-load.php');
//Here you can use WordPress core features, for example the $WPDB object
とロードされているものを参照してください:
require('the/path/to/wp-load.php file');
これはあまりにもトリックを行う必要があります:1行だけで
preg_match('/^(.+)wp-content\/.*/', dirname(__FILE__), $path);
include($path[1] . 'wp-load.php');
高速かつ軽量な方法は
です(dirnameは(_FILE__)が必要です '/ WP-ブログ - header.phpの。 ');ワードプレスは、index.phpのをロードし初期化し、あなたがindex.phpのを確認したときに、あなたが見るので
理由がある:
はが必要(のdirname(__FILE__) '/ WP-ブログ - header.phpの'。) ;
これはワードプレスを読み込み、ブートストラップします。
ので、インストールワードプレスの外でワードプレスを使用するには、単純に新しいファイルを作成し、書き込み:
は(dirnameは(__FILE__) '/ WP-ブログ - header.phpの' を。)が必要です。
次に、テスト用に、次のように記述します。global $ wpdb; var_export($ wpdb)。
これで、すべてのwordpress APIとデータベースオブジェクト$ wpdbにアクセスできます。
これは確かに最良の答えです! –
カスタムスクリプトのためのSHORTINITを使用した方が最適です。 –
ありがとうございます!これはまさに私が必要としていたものです。 wp-db.php自体には含まれていない無関係のWP機能が必要です。これにより解決されます。 –