Подключение к базе данных с использованием файла wp-config WordPress
Как я могу подключиться к базе данных, используя файл wp-config.php?
Я пытаюсь сделать скрипт более совместимым с WordPress и мне нужно подключиться к базе данных, но без установки скрипта в качестве плагина.
В основном в моем скрипте есть:
$host = "xxxxxxxxxxx"; //расположение базы данных
$user = "xxxxxxxxxxx"; //имя пользователя базы данных
$pass = "xxxxxxxxxxx"; //пароль базы данных
$db_name = "xxxxxxxx"; //имя базы данных
//Подключение к базе данных
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);
Скрипт не может быть установлен как плагин (что могло бы упростить задачу), поэтому мне нужно подключиться к базе данных, используя существующий wp-config.php в установке... Есть идеи?
Заранее спасибо
Редактирование и Уточнение
1- Мне нужно использовать wp-config.php как есть, без модификаций. 2- Скрипт будет находиться по адресу www.example.com/script/ 3- Это не может быть сделано как плагин, так как ядро скрипта требует публичного доступа без каких-либо экранов входа. 4- Мой вопрос заключается в том, как подключиться к базе данных, используя файл wp-config.php, модифицируя скрипт выше.

Использование определенных пользователем констант в wp-config:
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
РЕДАКТИРОВАНИЕ: Поскольку ваш скрипт находится вне среды Wordpress, перед использованием констант из wp-config необходимо его инициализировать.
require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

Вы сами указали в своём вопросе, что это в данный момент не работает. Не буду ставить минус, но, пожалуйста, убедитесь, что ваш ответ действительно работает и показывает, где ТС ошибся. Спасибо! :) Кстати: добро пожаловать на WPSE и пусть это небольшое замечание с моей стороны не останавливает вас от ответов на другие вопросы. Ответы всегда высоко ценятся.

Подключение к базе данных работает. Проблема в моём вопросе заключается в выносе функции, которая его вызывает, во внешний файл. Используемые мной значения — это константы, заданные в wp-config.php
, которые используются для настройки WordPress. Вы хотя бы попробовали, прежде чем предположить, что это не работает?

Вы действительно пробовали это? У меня была точно такая же проблема (подключение к базе данных), и я решил её, используя определения из wp-config (как вы и просили). Единственная переменная, которая вам нужна — это $db_name, так как все остальные уже доступны в среде WP благодаря wp-config.php
. Пока загружена среда WordPress, у вас есть полный доступ к этим определениям.
прим.ред.: Ваш скрипт находится вне среды WordPress?

Да, пожалуйста, прочтите моё последнее примечание, и спасибо, что уделили время

Без проблем. Проверил своё исправление и отредактировал исходное решение, чтобы отразить это.

Вы можете внедрить свой скрипт прямо в запись WordPress, используя предоставляемый WordPress объект $wpdb
. Объект $wpdb
уже содержит установленное подключение к базе данных, и вы можете использовать его для выполнения любых операций: вставки, обновления, запросов и т.д. Это предпочтительный метод работы с базой данных внутри WordPress, так как вам не нужно открывать дополнительные соединения с БД.
Вот простой пример получения запланированных публикаций:
$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");
Дополнительную информацию можно найти в этой статье: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

Когда я убираю ссылку из вашего ответа, я не получаю информации о том, каким было бы фактическое решение, за исключением намека, что $wpdb
может выполнять базовые задачи работы с базой данных. Не могли бы вы улучшить ваш ответ, показав какой-нибудь простой пример? Спасибо.

В статье там есть очень подробное описание объекта $wpdb
, поэтому я не хотел копировать и вставлять много текста. Но в основном, если ваш скрипт является частью WordPress, вы можете использовать объект $wpdb
для выполнения запросов к базе данных, например так:
`$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");`
Человек, задавший вопрос, позже уточнил, что он(а) не хочет делать это плагином, поэтому мой ответ стал менее актуален, и я решил оставить его как есть.

Пожалуйста, всегда включайте в вопрос всю необходимую информацию. Комментарии регулярно удаляются. В любом случае, я прочитал другой ответ и вопрос снова и поставил -1 обоим. На данный момент исходный вопрос все еще выглядит как попытка взлома/заражения сайта, а другой ответ противоречит лучшим практикам в каждой строке.
