web-dev-qa-db-ja.com

問い合わせ WP WordPressの外部からWPDB APIを使ってデータを取得する

私はWPを使ったプロジェクトに取り組んでいます。これはプラグインに少し似ていますが、まったくそうではありません。

いくつかのカスタムSQL関数を含むファイルをまったく別のファイルに含めようとすると、問題が発生します。http://example.com/folder1/file.php/wp-admin/install.phpにリダイレクトされます。

これは私がすでにWPをインストールしていて、再度インストールする前にそれをアンインストールする必要があることを示しています。

^ちょっと複雑に思えますが、例を挙げましょう。

file1.phpfile2.phpがあります。 file1.phpには、WPが使用するDBにアクセスするために私が書いた多くのSQL関数が含まれています。

そしてfile2.phpにはfile1.phpを含むクラスが含まれているので、クラス内のいくつかのSQL関数を使用できます。

さて、私は最初にクラス内のいくつかのSQL関数(from file1.php)を呼び出すことでそれをテストし、この問題に出会いました。いくつかのデバッグ(1行ずつ削除)の後、問題はfile1.php(すべてのSQL関数を含むファイル)を含む行でした。

そのため、何らかの理由で、file1.phpfile2.phpを含めるたびに、次のようにリダイレクトされます。http://example.com/folder1/file2.php/wp-admin/install.php

なぜこれが起こっているのか、そしてどのようにしてそれを直すことができるのでしょうか。

何かを言及するのを忘れた:

file1.php(すべてのSQL関数を含む)にDB情報を取得するためのwp-config.phpが含まれていますが、これはこの問題に関連している可能性があります。

2
user11388

裸の必需品

DBにアクセスするWPの部分だけをロードしようとしているのであれば、そこには定数があります。

define( 'SHORTINIT', true )

これをカスタムクエリvarと組み合わせるだけで、wp-config.phpファイルからオン/オフを切り替えることができます。

if ( 
    isset( $_GET['shortinit'] )
    AND 'true' === $_GET['shortinit']
)
    define( 'SHORTINIT', true )

これにより、あなたのURlに?shortinit=trueを付け加えてWPを実行することができます。他のAPI関数が必要な場合は、単にそのラッパーを設定ファイルで拡張し、責任あるファイルも含めてください。

しかしあなたは自分自身でグローバルを$wp, $wp_query, $wp_the_queryに設定しなければならないでしょう。どこでどのようにコアがこれを行うのかを見れば、それほど難しくありません。

ルーティング

私はどうやってあなたがWP以外の書き換えルールを追加できるかについても書いています この答え

1
kaiser

何かを述べるのを忘れた:

file1.php(すべてのSQL関数を含む)にDB情報を取得するためのwp-config.phpが含まれていますが、これはこの問題に関連している可能性があります。

ドーナツにドル、これはあなたの問題です。 everwp-config.phpを直接ロードする必要は決してありません。

あなたはoutside WordPressからWordPressの機能にアクセスしようとしていますか?

編集する

通常のWordPress環境のoutsideからWordPressの機能にアクセスするには、wp-load.phpnotwp-config.phpを含めます。

基本的な例:

<?php
require( 'path/to-wordpress/wp-load.php' );
?>

編集2

私は[WordPressの機能にアクセスする必要はありません]私はしません。 DB情報(ホスト、ユーザー、パスワード)だけ。私が取り組んでいるアプリはWP dbにいくつかの追加のテーブルをインストールします。アプリはWPのデータに触れる必要はありません。 ITは、単にWPが使用するものと同じデータベースを使用している独自のテーブルで、独自のデータにアクセスするためにDB情報を使用するだけです。私は自分のデータベースをMySQLにすることを望みますが、ほとんどのユーザーはそうする権限を持っていません。だから私はWPのデータベースを使う必要がありますが、私自身のテーブルを使います。アプリにはWPがインストールされている必要がありますが、WPのATM機能にアクセスする必要はありません。

この場合、あなたは load WordPressは必要ありませんです。データベースにアクセスしているだけです。行を完全に省略してください。

1
Chip Bennett