私はアップロードされたファイルからデータを読み込み、WPデータベース上でクエリを実行するプラグインを持っています。これらの挿入は私のプラグインによって作成されたテーブルの中にあるので、それらは投稿タイプではありません。
これは私がそれを動かした方法です:
$connection = mysqli_connect($db_Host, $db_user, $db_pass, $db_name);
mysqli_query($connection, $query);
これの問題は、私がプラグインのソースコードの中でこれらの変数( $ db_Host、$ db_user、$ db_pass、$ db_name )を宣言しなければならないことです。
Wp apiを使ってカスタムテーブルにデータを挿入する方法はありますか?それとも、バージョン管理の設定で無視できる外部ファイルからこれらの変数を引き出すことができる方法はありますか?
WPが最初にあなたのためにそれをしている間あなた自身の方法でDBを接続しようとするのは良い習慣ではありません。
これの問題は、私がプラグインのソースコードの中でこれらの変数($ db_Host、$ db_user、$ db_pass、$ db_name)を宣言しなければならないということです。
これらすべてのプロパティは、ルート領域にあるwp-config.php
ファイルで定義されています。
これらの定数を取得する場合は、ファイルをインクルードして定数を呼び出すか、REGEXを使用してください(WordPressのロードを必要とする他のコールバックがあるため、REGEXを使用してください)
// loading the config file to pull the DB_* constants
$dirname = dirname(__FILE__);
$root = false !== mb_strpos( $dirname, 'wp-content' ) ? mb_substr( $dirname, 0, mb_strpos( $dirname, 'wp-content' ) ) : $dirname;
// if $root is not correct, provide a static path then, $root = '/path/to/root/dir'
// assuming constants are ready (wp is configured), let's get them.
require_once( $root . "wp-config.php" );
echo var_dump(
'DB name', DB_NAME,
'DB user', DB_USER,
'DB password', DB_PASSWORD,
'DB Host', DB_Host
);
これがより良い解決策です。
WordPressをロード
require( '/wp-blog-header.php' );
あなたはそのファイルへの作業パスを提供するべきです!
WordPressを正常にロードしたかどうかをテストするには、何かをダンプします。
add_action("wp", function() {
echo sprintf( "Yes! I am creating with WordPress v. %s!\n", get_bloginfo("version") );
exit("I exits\n");
});
今WordPress DB APIを使う
データを挿入するには、これがあります wpdb::insert
あなたが使うべきです。ここに構文
$wpdb->insert( $table, $data, $format );
と使用例:
$wpdb->insert(
'messages',
array(
'PM_ID' => (int) $pm_id,
'sender' => $current_user->ID,
'recipient' => (int) $recipient,
'message' => "Hello!\n",
'date' => time()
)
);
$record_id = $wpdb->insert_id;
この例では、$wpdb->insert
の2番目のパラメータの配列は、列名としてインデックスを持つ配列であり、最後のレコードのIDを取得する$wpdb->insert_id
を使用してIDを取得できる独立したレコードの列に挿入する値です。
少なくとも直接の問い合わせの代わりに$wpdb::insert
やプリペアドステートメントを使ったSQLインジェクションから離れていれば、それが助けになることを願っています。
$ wpdb がどのように機能するのか調べないでください。 https://codex.wordpress.org/Class_Reference/wpdb にアクセスしてください。
$ wpdb を使用してデータベースにデータを挿入する方法の例を示します。
<?php
global $wpdb;
$wpdb->insert(
'table_name_here',
array(
'column1' => 'value1',
'column2' => 123
),
array(
'%s',
'%d'
)
);
?>
詳しくは https://codex.wordpress.org/Creating_Tables_with_Plugins をご覧ください。