WordPressの絶対パス(ABSPATH)が機能しない
On 11月 30, 2020 by admin現在、プラグイン情報をデータベースに保存する小さなタスクに取り組んでいますが、クエリを実行する関数を含むファイルを含めます。
ファイルを含む行は次のとおりです。
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
しかし、コードを実行すると次のようになりました:
警告:
require_once(ABSPATHwp-admin/includes/upgrade.php)
:ストリームを開くことができませんでした:ividの/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
にそのようなファイルまたはディレクトリはありません= “b1102cc5da”>
行18
たくさん検索しましたが、できません役立つものや役立つものを見つけてください。
編集
コードは次のとおりです:
global $wpdb; $table_name = $wpdb->prefix . "table_form"; $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, rows int(11) DEFAULT NULL, cols int(11) DEFAULT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . "wp-admin/includes/upgrade.php"); dbDelta( $sql );`
コメント
回答
<自分で作成したp>
insert.php
ファイル、実際にはワードプレスは初めてですが、間違いはありますか?実際、プラグインのフォーム情報をデータベースに保存したいと思います。
あなたの質問は詳細が非常に軽いですが、あなたが犯している間違いは読み込み中だと思いますWordPressのコンテキスト外でロードされるような方法で、またはWordPressの一部のみがロードされるような方法でファイル。
質問の詳細が不足している(コードのコンテキストがほぼ完全に不足している)ため、確実な回答を提供することはできませんが、コードを実行する必要があることを提案する傾向があります。 AJAX API (厳密にはAJAXでなくても)。次のようなもの: https://wordpress.stackexchange.com/a/108145/21376
より適切な回答が必要な場合は、 あなたは より良い質問を書く必要があります。質問の下にある[編集]ボタンをクリックして、できるだけ詳細を追加してください。ただし、整理しておいてください。
コメント
- I ' AJAX呼び出しフルストップ内にデータベーステーブルが作成されていることを非常に心配しています
回答
パスに「/」がないかどうかを確認したくないときに役立つ優れたWordPress関数があります。
trailingslashit
例は、推奨される記述方法である必要があります。
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
この関数を使用すると、決してこの関数は「/」が欠落している場合に備えて確実に表示されるため、「相対」パスの前に「/」を付ける必要があります。
これが、WordPressでその関数を作成した理由です。
回答
ABSPATH
は機能し、wp-loadファイルを含める必要があります。include "../../../wp-load.php";
回答
必要があります/は必要ありませんが、/ wp-adminの先頭でスラッシュを試してください
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
しかし、/ wp-admin / admin-insertかどうかを確認しましたか。 phpファイルは存在しますか?
ABSPATHは定義されていますか?以下を追加して確認します。
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
また、WPをロードせずにこれを実行しようとしていますか?さらに、site_url()を試して操作することもできます。
回答
ABSPATHには、末尾にスラッシュが含まれている必要があります。メインプラグインのファイルからアップグレードファイルを含める必要があります。「plugins_loaded」アクションまたは「init」にフックしてから、アップグレードメソッドを呼び出す必要があるかもしれません。
ABSPATH
は定義されていないようです。どこで使用していますか?ABSPATH
の後でwp-admin/
の前にスラッシュを見逃した可能性があります。これを試してください:ABSPATH . '/wp-admin/
。また、このStackOverflowWPの質問も検討してください。/wp-admin/admin-insert.php
?これはコアではありません。 WordPressコアを変更していますか?