Terhubung ke database menggunakan file wordpress wp-config


8

Bagaimana saya bisa terhubung ke database menggunakan file wp-config.php?

Saya mencoba membuat skrip yang lebih ramah dengan Wordpress, dan saya perlu terhubung ke database, tetapi tanpa menginstal skrip sebagai plugin.

Pada dasarnya saya miliki di skrip saya

$host = "xxxxxxxxxxx"; //database location
$user = "xxxxxxxxxxx"; //database username
$pass = "xxxxxxxxxxx"; //database password
$db_name = "xxxxxxxx"; //database name

//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

Script tidak dapat diinstal sebagai plugin (yang dapat membuat segalanya lebih mudah), jadi saya perlu terhubung ke database menggunakan wp-config.php yang ada pada instalasi ... Ada ide ???

Terima kasih sebelumnya

Edit dan Klarifikasi

1- Saya perlu menggunakan wp-config.php apa adanya, tanpa modifikasi. 2- Skrip akan berlokasi di www.example.com/script/ 3- Skrip tidak dapat dilakukan sebagai plugin karena inti skrip harus diakses secara publik tanpa ada layar masuk yang melompat-lompat. 4- Pertanyaan saya pada dasarnya adalah bagaimana menghubungkan ke database menggunakan file wp-config.php dengan memodifikasi skrip di atas.


1
Tolong jelaskan mengapa sebenarnya itu tidak mungkin sebagai plugin.
kaiser

Karena skrip harus diakses secara publik, bukan di sisi admin (skrip ini tidak akan berfungsi pada folder apa pun seperti wp-content / plugins karena layar masuk mungkin terlihat).
user983248

Saya pikir Anda mungkin ingin mengedit pertanyaan Anda untuk mengatakan apa yang ingin Anda lakukan dengan skrip Anda. Cukup banyak hal yang mungkin dilakukan sebagai plug-in :)
Stephen Harris

Validasi IPN untuk Paypal, Lihat, itu tidak berfungsi untuk saya saat melakukannya dari folder Plugins, tapi ya dari folder di luar seluruh instalasi Wordpress
user983248

Jawaban:


10

Menggunakan definisi yang ditetapkan pengguna di wp-config:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

EDIT : Karena skrip Anda berada di luar lingkungan Wordpress, apa yang ingin Anda lakukan adalah memulai sebelum menggunakan definisi di wp-config.

require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

1
Yang Anda nyatakan bahwa saat ini tidak berfungsi dalam pertanyaan Anda sendiri. Tidak akan menurunkan suara, tapi tolong pastikan bahwa jawaban Anda benar-benar berfungsi dan menunjukkan kesalahan OP. Terima kasih! :) Btw: Selamat datang di WPSE dan jangan biarkan sedikit dorongan itu menahan Anda dari menjawab pertanyaan lain. Menjawab selalu sangat dihargai.
kaiser

Koneksi ke basis data berfungsi. Masalah dalam pertanyaan saya adalah mengabstraksi fungsi yang memanggilnya ke file eksternal. Nilai yang saya gunakan di sini adalah definisi wp-config.phpyang Anda gunakan untuk mengatur Wordpress. Apakah Anda setidaknya mencobanya sebelum menganggap itu tidak berhasil?
akamaozu

Ini sedikit dari pertanyaan aslinya
user983248

Sudahkah Anda mencobanya? Saya memiliki masalah yang sama persis dengan yang Anda miliki (menghubungkan ke database) dan saya menyelesaikannya dengan menggunakan definisi yang ditetapkan oleh wp-config (seperti yang Anda minta) . Satu-satunya variabel yang Anda butuhkan adalah $ db_name, karena semua sisanya sudah ada di lingkungan WP wp-config.php. Selama lingkungan Wordpress dimuat, Anda memiliki akses total ke definisi. edit: Apakah skrip Anda di luar lingkungan Wordpress?
akamaozu

Ya, silakan baca edit terakhir saya, dan terima kasih telah meluangkan waktu
user983248

3

Anda dapat menjadikan skrip sebagai bagian dari posting WordPress Anda, cukup gunakan $wpdbobjek yang disediakan oleh WordPress itu sendiri. The $wpdbobjek yang sudah telah koneksi database didirikan dan Anda dapat menggunakannya untuk melakukan operasi database yang: insert, update, query dll ... Ini adalah metode lebih baik untuk melakukan hal-hal yang Anda DB di dalam WordPress karena Anda tidak perlu membuka koneksi database tambahan .

Sebagai contoh adalah contoh sederhana untuk mendapatkan posting di masa depan:

$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4");

Lihat artikel ini untuk info tambahan: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/


1
Ketika saya menghapus tautan dari jawaban Anda, saya tidak mendapat informasi tentang apa solusi yang sebenarnya, selain dari sebuah petunjuk yang $wpdbdapat melakukan tugas-tugas basis data dasar. Maukah Anda meningkatkan jawaban untuk memamerkan beberapa contoh dasar? Terima kasih.
kaiser

Artikel di sana memiliki deskripsi $wpdbobjek yang sangat terperinci , jadi saya tidak ingin memotong dan menempelkan banyak teks di sana. Tetapi pada dasarnya jika skrip Anda adalah bagian dari WordPress, Anda dapat menggunakan $wpdbobjek untuk menjalankan kueri basis data seperti ini: $posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4"); Orang yang mengajukan pertanyaan mengklarifikasi nanti bahwa ia tidak ingin menjadikannya plugin, jadi jawaban saya adalah kurang relevan sekarang, jadi saya memutuskan untuk membiarkannya apa adanya.
obaranovsky

Harap selalu memasukkan informasi yang dibutuhkan seseorang ke dalam pertanyaan. Komentar dibersihkan secara teratur. Ngomong-ngomong, saya membaca jawaban yang lain dan pertanyaan itu lagi dan memberi mereka keduanya. Sekarang pertanyaan awal masih terlihat seperti upaya untuk meretas / menginfeksi situs dan jawaban lainnya adalah menentang praktik terbaik di setiap baris.
kaiser

Ini adalah solusi yang lebih baik menurut saya. Memanfaatkan fungsi WordPress bawaan selalu lebih disukai. Setelah mencari di $ wpdb Object, seharusnya menjadi jelas.
user3135691
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.