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

3 мая 2012 г., 18:43:24
Просмотры: 117K
Голосов: 10

Как я могу подключиться к базе данных, используя файл 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, модифицируя скрипт выше.

4
Комментарии

Пожалуйста, объясните почему именно это невозможно реализовать как плагин.

kaiser kaiser
4 мая 2012 г. 10:53:05

Потому что скрипт должен быть доступен публично, а не в админ-панели (он не будет работать в таких папках как wp-content/plugins, так как может появиться экран входа в систему).

user983248 user983248
4 мая 2012 г. 13:28:14

Думаю, вам стоит уточнить в своем вопросе, что именно вы хотите сделать с вашим скриптом. Практически любую функциональность можно реализовать в виде плагина :)

Stephen Harris Stephen Harris
4 мая 2012 г. 16:19:53

Валидация IPN для Paypal. Видите, у меня это не сработало, когда я делал это из папки Plugins, но сработало из папки за пределами всей установки WordPress

user983248 user983248
4 мая 2012 г. 17:38:25
Все ответы на вопрос 2
7
12

Использование определенных пользователем констант в 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);
4 мая 2012 г. 03:43:42
Комментарии

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

kaiser kaiser
4 мая 2012 г. 10:52:22

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

akamaozu akamaozu
4 мая 2012 г. 12:55:00

Это немного отклоняется от первоначального вопроса

user983248 user983248
4 мая 2012 г. 13:44:46

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

прим.ред.: Ваш скрипт находится вне среды WordPress?

akamaozu akamaozu
4 мая 2012 г. 13:50:44

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

user983248 user983248
4 мая 2012 г. 14:01:28

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

akamaozu akamaozu
4 мая 2012 г. 14:09:26

@Akamaozu: Я приму ваш ответ как правильный после того, как вы измените код с 'wp-blog-header.php' на 'wp-config.php', так как именно этот файл обсуждается здесь. Большое спасибо

user983248 user983248
4 мая 2012 г. 18:02:43
Показать остальные 2 комментариев
4

Вы можете внедрить свой скрипт прямо в запись 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/

5 апр. 2014 г. 03:05:37
Комментарии

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

kaiser kaiser
5 апр. 2014 г. 05:09:46

В статье там есть очень подробное описание объекта $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");`

Человек, задавший вопрос, позже уточнил, что он(а) не хочет делать это плагином, поэтому мой ответ стал менее актуален, и я решил оставить его как есть.

obaranovsky obaranovsky
11 дек. 2014 г. 02:21:25

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

kaiser kaiser
11 дек. 2014 г. 03:36:14

На мой взгляд, это лучшее решение. Использование встроенных функций WordPress всегда предпочтительнее. После изучения объекта $wpdb это станет очевидным.

user3135691 user3135691
14 июн. 2017 г. 16:14:26