Saya memiliki plugin yang membaca data dari file yang diunggah dan menjalankan kueri pada database wp. Sisipan ini masuk ke dalam tabel yang dibuat oleh plugin saya, jadi ini bukan tipe postingan.
Beginilah cara saya membuatnya bekerja:
$connection = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
mysqli_query($connection, $query);
Masalahnya adalah saya harus mendeklarasikan variabel-variabel ini ($db_host, $db_user, $db_pass, $db_name) di dalam kode sumber plugin.
Apakah ada cara untuk memasukkan data ke dalam tabel kustom saya dengan wp api? Atau adakah cara agar saya dapat mengambil variabel-variabel ini dari file eksternal yang dapat saya abaikan dalam pengaturan kontrol versi?
Itu bukan praktik yang baik untuk mencoba menghubungkan DB dengan metode Anda sendiri sementara WP melakukannya untuk Anda pada awalnya.
Masalahnya adalah saya harus mendeklarasikan variabel-variabel ini ($db_host, $db_user, $db_pass, $db_name) di dalam sumber plugin kode.
Semua properti ini didefinisikan dalam file wp-config.php
, yang terletak di area root.
Jika Anda ingin mendapatkan konstanta-konstanta ini, cukup sertakan file tersebut dan panggil konstanta-konstanta tersebut, atau gunakan REGEX (lebih baik gunakan REGEX, karena mungkin ada pemanggilan lain yang memerlukan pemuatan WordPress)
// 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
);
Inilah solusi yang lebih baik:
Muat WordPress
require( '/wp-blog-header.php' );
Anda harus menyediakan jalur yang berfungsi ke file tersebut!
Untuk menguji apakah Anda telah berhasil memuat WordPress, buanglah sesuatu:
add_action("wp", function() {
echo sprintf( "Yes! I am creating with WordPress v. %s!\n", get_bloginfo("version") );
exit("I exits\n");
});
Sekarang gunakan API DB WordPress
Untuk menyisipkan data, Anda dapat menggunakan wpdb::insert
. Berikut sintaksnya
$wpdb->insert( $table, $data, $format );
dan contoh penggunaannya:
$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;
Pada contoh, larik dalam $wpdb->insert
' param ke-2 adalah sebuah larik dengan indeks sebagai nama kolom, dan nilai yang akan disisipkan untuk kolom-kolom tersebut dalam sebuah record independen yang dapat Anda peroleh ID-nya dengan $wpdb->insert_id
yang akan memperoleh ID penyisipan record terakhir dalam tabel tersebut.
Semoga ini membantu, setidaknya Anda menjauhi injeksi SQL menggunakan $wpdb::insert
atau pernyataan yang sudah disiapkan, bukan query langsung.
Mengapa tidak mempelajari cara kerja $wpdb. Kunjungi https://codex.wordpress.org/Class_Reference/wpdb
Berikut ini adalah contoh cara memasukkan data ke dalam database menggunakan $wpdb
<?php
global $wpdb;
$wpdb->insert(
'table_name_here',
array(
'column1' => 'value1',
'column2' => 123
),
array(
'%s',
'%d'
)
);
?>
Kunjungi https://codex.wordpress.org/Creating_Tables_with_Plugins untuk informasi lebih lanjut.
<?php
global $wpdb;
$table="test_table";
$store_arr["name"]="test";
$store_arr["email"]="[email protected]";
$wpdb->insert( $table, $store_arr);
?>