私は現在データベースにプラグイン情報を格納する小さなタスクに取り組んでいますが、クエリを実行する機能を持つファイルをインクルードすることに関して問題があります。
ファイルを含む行は次のとおりです。
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
しかし、コードを実行すると以下のようになりました。
警告:
require_once(ABSPATHwp-admin/includes/upgrade.php)
:ストリームのオープンに失敗しました: 行18の/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
にそのようなファイルまたはディレクトリがありません
私はたくさん検索しましたが、役に立つものや役に立つものを見つけることができません。
これが私のコードです:
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 );`
自分で作った
insert.php
ファイル、実際には私はwordpressに不慣れです、私はそれがしたいのです私がしていることに何か間違いはありますか?実際にデータベースにプラグインフォーム情報を保存したいです。
あなたの質問は細部については非常に軽いですが、あなたがしている間違いはそれがWordPressの文脈の外でロードするような方法で、またはWordPressの一部だけがロードされるような方法でファイルをロードすることです。
あなたの質問に細部が欠けている - コードのための文脈のほぼ完全な欠如 - は確かな答えを提供することを不可能にしますが、私はあなたが AJAXを通してあなたのコードを実行する必要があることを提案することに傾いていますAPI (厳密にはAJAXでなくても)このようなもの: https://wordpress.stackexchange.com/a/108145/21376
もっと良い答えが欲しいならば、あなたがしなければならないより良い質問を書いてください。質問の下にある[編集]ボタンをクリックして、できるだけ詳細を追加してください。ただし、整理しておいてください。
パス上に "/"がないことを確認したくない場合に役立つ、WordPressの便利な機能があります。
trailingslashit
あなたの例は書かれた推奨される方法であるべきです:
require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' );
この関数を使用すると、 "/"がない場合に "/"が確実に表示されるため、 "/"を "相対"パスの前に置く必要はありません。
これがWordPressでその機能を作成した理由です。
ABSPATH
はあなたがwp-loadファイルをインクルードするのに必要であるように働きます。 include '../../../wp-load.php';
ABSPATHには末尾のスラッシュがすでに含まれているはずです。メインプラグインのファイルからアップグレードファイルを含める必要があります。たぶんあなたは 'plugins_loaded'アクションか 'init'にフックしてからアップグレードメソッドを呼び出す必要があります。
/は必要ありませんが、/ 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()を試してそれを使うことができます。