私はWPを使ったプロジェクトに取り組んでいます。これはプラグインに少し似ていますが、まったくそうではありません。
いくつかのカスタムSQL関数を含むファイルをまったく別のファイルに含めようとすると、問題が発生します。http://example.com/folder1/file.php/wp-admin/install.php
にリダイレクトされます。
これは私がすでにWPをインストールしていて、再度インストールする前にそれをアンインストールする必要があることを示しています。
^ちょっと複雑に思えますが、例を挙げましょう。
file1.php
とfile2.php
があります。 file1.php
には、WPが使用するDBにアクセスするために私が書いた多くのSQL関数が含まれています。
そしてfile2.php
にはfile1.php
を含むクラスが含まれているので、クラス内のいくつかのSQL関数を使用できます。
さて、私は最初にクラス内のいくつかのSQL関数(from file1.php
)を呼び出すことでそれをテストし、この問題に出会いました。いくつかのデバッグ(1行ずつ削除)の後、問題はfile1.php
(すべてのSQL関数を含むファイル)を含む行でした。
そのため、何らかの理由で、file1.php
にfile2.php
を含めるたびに、次のようにリダイレクトされます。http://example.com/folder1/file2.php/wp-admin/install.php
なぜこれが起こっているのか、そしてどのようにしてそれを直すことができるのでしょうか。
何かを言及するのを忘れた:
file1.php
(すべてのSQL関数を含む)にDB情報を取得するためのwp-config.php
が含まれていますが、これはこの問題に関連している可能性があります。
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以外の書き換えルールを追加できるかについても書いています この答え 。
何かを述べるのを忘れた:
file1.php
(すべてのSQL関数を含む)にDB情報を取得するためのwp-config.php
が含まれていますが、これはこの問題に関連している可能性があります。
ドーナツにドル、これはあなたの問題です。 everがwp-config.php
を直接ロードする必要は決してありません。
あなたはoutside WordPressからWordPressの機能にアクセスしようとしていますか?
通常のWordPress環境のoutsideからWordPressの機能にアクセスするには、wp-load.php
、notwp-config.php
を含めます。
基本的な例:
<?php
require( 'path/to-wordpress/wp-load.php' );
?>
私は[WordPressの機能にアクセスする必要はありません]私はしません。 DB情報(ホスト、ユーザー、パスワード)だけ。私が取り組んでいるアプリはWP dbにいくつかの追加のテーブルをインストールします。アプリはWPのデータに触れる必要はありません。 ITは、単にWPが使用するものと同じデータベースを使用している独自のテーブルで、独自のデータにアクセスするためにDB情報を使用するだけです。私は自分のデータベースをMySQLにすることを望みますが、ほとんどのユーザーはそうする権限を持っていません。だから私はWPのデータベースを使う必要がありますが、私自身のテーブルを使います。アプリにはWPがインストールされている必要がありますが、WPのATM機能にアクセスする必要はありません。
この場合、あなたは load WordPressは必要ありませんです。データベースにアクセスしているだけです。行を完全に省略してください。