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.