web-dev-qa-db-ja.com

WordPressの絶対パス(ABSPATH)が機能していません

私は現在データベースにプラグイン情報を格納する小さなタスクに取り組んでいますが、クエリを実行する機能を持つファイルをインクルードすることに関して問題があります。

ファイルを含む行は次のとおりです。

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 );`
3
Najam-us-Saqib

自分で作ったinsert.phpファイル、実際には私はwordpressに不慣れです、私はそれがしたいのです私がしていることに何か間違いはありますか?実際にデータベースにプラグインフォーム情報を保存したいです。

あなたの質問は細部については非常に軽いですが、あなたがしている間違いはそれがWordPressの文脈の外でロードするような方法で、またはWordPressの一部だけがロードされるような方法でファイルをロードすることです。

あなたの質問に細部が欠けている - コードのための文脈のほぼ完全な欠如 - は確かな答えを提供することを不可能にしますが、私はあなたが AJAXを通してあなたのコードを実行する必要があることを提案することに傾いていますAPI (厳密にはAJAXでなくても)このようなもの: https://wordpress.stackexchange.com/a/108145/21376

もっと良い答えが欲しいならば、あなたがしなければならないより良い質問を書いてください。質問の下にある[編集]ボタンをクリックして、できるだけ詳細を追加してください。ただし、整理しておいてください。

3
s_ha_dum

パス上に "/"がないことを確認したくない場合に役立つ、WordPressの便利な機能があります。

trailingslashit

あなたの例は書かれた推奨される方法であるべきです:

require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' );

この関数を使用すると、 "/"がない場合に "/"が確実に表示されるため、 "/"を "相対"パスの前に置く必要はありません。

これがWordPressでその機能を作成した理由です。

3
Gabb3

ABSPATHはあなたがwp-loadファイルをインクルードするのに必要であるように働きます。 include '../../../wp-load.php';

1
Hari Om Gupta

ABSPATHには末尾のスラッシュがすでに含まれているはずです。メインプラグインのファイルからアップグレードファイルを含める必要があります。たぶんあなたは 'plugins_loaded'アクションか 'init'にフックしてからアップグレードメソッドを呼び出す必要があります。

0

/は必要ありませんが、/ 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()を試してそれを使うことができます。

0
LPH