Как подключиться к внешнему серверу PostgreSQL из WordPress?

Добрый день! У кого есть опыт, подскажите, как можно подключить WordPress к стороннему SQL-серверу, в данном случае к PostgreSQL, когда сам WordPress работает на MySQL? Мне нужно отобразить результаты SQL-запроса к этому серверу в виде таблицы на одной из страниц портала, причем предварительно их отформатировав. Заранее благодарю за помощь!
  • 22 ноября 2024 г. 11:33
Ответы на вопрос 3
Подключение WordPress к внешнему серверу PostgreSQL, когда сам WordPress работает на MySQL, возможно, но требует дополнительной настройки. WordPress по умолчанию использует MySQL, и для работы с PostgreSQL вам потребуется либо использовать специальные плагины, либо писать собственный код.

Вот несколько шагов, чтобы подключиться и выполнить запросы к PostgreSQL:

### 1. Установка необходимых библиотек

Для работы с PostgreSQL вам нужно убедиться, что PHP на вашем сервере поддерживает работу с PostgreSQL. Обычно это расширение `pdo_pgsql`. Установите его с помощью вашего менеджера пакетов. Например, для Ubuntu это может быть:

```bash
sudo apt-get install php-pgsql
```

### 2. Использование плагина

Существует несколько плагинов, которые могут облегчить задачу:

- **WP Data Access** – позволяет интегрировать базы данных и выполнять сложные запросы.
- **WPDB** – пакет, который позволяет взаимодействовать с другими СУБД, в том числе с PostgreSQL, используя предоставленные вами SQL-запросы.

Обратите внимание на их документацию для правильной настройки.

### 3. Либо писать свой код

Если вы решили писать свой код, вы можете использовать PHP для подключения к PostgreSQL. Пример подключения к PostgreSQL и выполнения запросов может выглядеть так:

```php
function get_postgresql_data() {
    // Параметры подключения
    $host = 'your_host';
    $port = '5432'; // стандартный порт для PostgreSQL
    $dbname = 'your_database';
    $user = 'your_user';
    $password = 'your_password';

    // Подключение к базе данных PostgreSQL
    $conn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");

    if (!$conn) {
        die("Ошибка соединения: " . pg_last_error());
    }

    // Выполнение SQL-запроса
    $result = pg_query($conn, "SELECT * FROM your_table");

    if (!$result) {
        die("Ошибка в запросе: " . pg_last_error());
    }

    // Обработка результата
    $data = [];
    while ($row = pg_fetch_assoc($result)) {
        $data[] = $row;
    }

    // Освобождение ресурса и закрытие соединения
    pg_free_result($result);
    pg_close($conn);

    return $data;
}

// Также вы можете отобразить данные на странице
add_shortcode('postgres_table', 'display_postgres_data');

function display_postgres_data() {
    $data = get_postgresql_data();

    // Форматирование данных в таблицу
    $output = '<table>';
    $output .= '<tr><th>Column1</th><th>Column2</th></tr>'; // замена на ваши колонки

    foreach ($data as $row) {
        $output .= '<tr>';
        $output .= '<td>' . esc_html($row['column1']) . '</td>'; // замените column1 на ваши названия
        $output .= '<td>' . esc_html($row['column2']) . '</td>'; // замените column2 на ваши названия
        $output .= '</tr>';
    }

    $output .= '</table>';
    
    return $output;
}
```

### 4. Установка и активация кода

- Вставьте приведённый выше код в файл темы `functions.php` или создайте собственный плагин.
- После этого вы можете использовать шорткод `[postgres_table]` в любом месте вашего сайта WordPress, чтобы отобразить данные.

### Заключение

Подключение WordPress к PostgreSQL может потребовать дополнительных настроек и кода, но это вполне осуществимо. Убедитесь, что ваши настройки безопасности и резервного копирования надёжны, особенно при работе с внешними базами данных.
Если не всю базу WP засунуть в postgre (боже упаси), а только в одном месте из шаблона страницы или плагина, то как в любом php-скрипте. https://www.php.net/manual/ru/book.pgsql.php
Как это реализовать проще всего?

Я скажу как правильней.
Нужно написать плагин, который будет
1. Конектится к сторонней БД и вытаскивать от туда данные. Далее по желанию - писать их в базу ВП или нет.
2. Вводить эти данные в "красиво отобразить в табличку". Тут опять же раздолье вариантов в зависимости от реальных задач. (первая из которых: логика понятия "отобразить" - где именно, как часто, динамика ли и пр.)
Похожие вопросы