Подключиться к базе данных, используя WordPress wp-config файл

8

Как я могу подключиться к базе данных, используя файл wp-config.php?

Я пытаюсь сделать скрипт более удобным для Wordpress, и мне нужно подключиться к базе данных, но без установки скрипта в качестве плагина.

В основном у меня есть на моем сценарии

$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);

Скрипт не может быть установлен как плагин (который может сделать вещи проще), поэтому мне нужно подключиться к базе данных, используя существующий wp-config.php при установке ... Есть идеи ???

заранее спасибо

Редактировать и уточнение

1- Мне нужно использовать wp-config.php как есть, без изменений. 2- Сценарий будет размещен по адресу www.example.com/script/. 3- Это не может быть сделано в качестве плагина, так как ядро ​​сценария требует публичного доступа без каких-либо скачков экрана входа. 4. В основном мой вопрос заключается в том, как подключиться к базе данных с помощью файла wp-config.php, изменив приведенный выше скрипт.

user983248
источник
1
Пожалуйста, объясните, почему именно это не возможно в качестве плагина.
Кайзер
Поскольку скрипт требует публичного доступа, а не на стороне администратора (он не будет работать ни в одной папке, такой как wp-content / plugins, поскольку может появиться экран входа в систему).
user983248
Я думаю, что вы можете изменить свой вопрос, чтобы сказать, что вы хотите сделать со своим сценарием. Практически все возможно в качестве плагина :)
Стивен Харрис
Проверка IPN для Paypal, видите, это не сработало для меня, когда я делал это из папки плагинов, но да из папки вне всей установки Wordpress
user983248

Ответы:

10

Используя определения, пользовательские наборы в 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);
akamaozu
источник
1
Что вы заявили, что в настоящее время это не работает в вашем собственном вопросе. Не буду понижать голос, но, пожалуйста, убедитесь, что ваш ответ действительно работает и показывает, что ОП делает неправильно. Спасибо! :) Кстати: добро пожаловать в WPSE и не позволяйте этому небольшому толчку со стороны меня удержать вас от ответа на другие вопросы. Ответ всегда высоко ценится.
Кайзер
Подключение к базе данных работает. Проблема в моем вопросе заключается в абстрагировании функции, которая вызывает ее во внешний файл. Значения, которые я здесь использую, определяют набор, в wp-config.phpкотором вы используете для настройки Wordpress. Вы по крайней мере попробовали это прежде, чем предположить, что это не работает?
akamaozu
Это немного от оригинального вопроса
user983248
Вы действительно пробовали это? У меня была точно такая же проблема, как и у вас (подключение к базе данных), и я решил ее, используя определения, установленные wp-config (как вы и просили) . Единственная переменная, которая вам нужна, это $ db_name, поскольку все остальные уже находятся в среде WP благодаря wp-config.php. Пока загружена среда Wordpress, у вас есть полный доступ к определениям. редактировать: ваш сценарий вне среды Wordpress?
akamaozu
Да, пожалуйста, прочитайте мою последнюю правку, и спасибо, что
нашли
3

Вы можете сделать свой скрипт частью вашего поста WordPress, просто используйте $wpdbобъект, предоставленный самим WordPress. У $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/

obaranovsky
источник
1
Когда я удалил ссылку из вашего ответа, у меня не было никакой информации о том, каким будет реальное решение, кроме подсказки, которая $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"); Человек, задающий вопрос, пояснил это позже, что он не хочет делать его плагином, поэтому мой ответ: менее актуально сейчас, поэтому я решил оставить все как есть.
Обарановский
Пожалуйста, всегда помещайте в вопрос любую информацию, которая нужна. Комментарии регулярно убираются. Во всяком случае, я прочитал другой ответ и вопрос снова и задал им обоим. К настоящему моменту первоначальный вопрос все еще выглядит как попытка взломать / заразить сайт, а другой ответ противоречит лучшим практикам в каждой строке.
Кайзер
На мой взгляд, это лучшее решение. Использование встроенных функций WordPress всегда предпочтительнее. После просмотра в объекте $ wpdb все должно стать ясно.
user3135691