Как мне получить данные из моей базы данных в моё настраиваемое поле экспорта?

Вопрос или проблема

Я пытаюсь получить данные из своей базы данных для экспорта в файл XML или CSV с помощью пользовательского запроса. Это моя функция с запросом:

<?php
function get_workhours($ID){
    $sql = $wpdb->prepare("SELECT worked_hours FROM db_info WHERE job_id = $ID");
    $data = $wpdb->query($sql);
    if(empty($data)){
        return "0";
    }else{
        return $data;
} ?>

А в моем пользовательском поле экспорта у меня есть это:

[get_workhours{ID}]

Когда я пытаюсь сделать предварительный просмотр, он выдает ошибку:

Произошла неизвестная ошибка.

Предложения по лучшему решению этой проблемы также приветствуются.

Заранее спасибо,

ИЗМЕНЕНИЕ: Я использую плагин WP All Export Pro. При добавлении поля для экспорта я выбираю опцию: Пользовательское поле экспорта.

Я думаю, что у вас неправильный синтаксис.
Должно быть [get_workhours({ID})].
Также нажмите кнопку “Сохранить функции” перед предварительным просмотром.

Ответ или решение

Чтобы успешно извлечь данные из базы данных и экспортировать их в формат XML или CSV с помощью пользовательского запроса в плагине WP All Export Pro, вам необходимо внести несколько изменений в ваш код и синтаксис вызова функции. Ниже изложен подробный план по решению вашей проблемы.

Шаг 1: Исправление функции запроса

Ваш текущий код функции содержит некоторые недочеты. Вам необходимо правильно использовать метод wpdb->get_var() для получения единственного значения из базы данных. Кроме того, рекомендуется использовать подготовленные выражения для большей безопасности. Вот исправленный вариант вашей функции:

<?php
function get_workhours($ID){
    global $wpdb; // Не забудьте указать глобальный доступ к объекту $wpdb
    $sql = $wpdb->prepare("SELECT worked_hours FROM db_info WHERE job_id = %d", $ID); // Используйте %d для целочисленного значения
    $data = $wpdb->get_var($sql); // Используйте get_var для получения единственного значения
    if(empty($data)){
        return "0";
    } else {
        return $data;
    }
}
?>

Шаг 2: Исправление синтаксиса пользовательского поля экспорта

Согласно вашему последнему сообщению, синтаксис вызова функции в пользовательском экспортном поле также нуждается в исправлении. Правильный формат для вызова пользовательской функции в WP All Export Pro таков:

[get_workhours({ID})]

Обратите внимание на использование круглых скобок для передачи параметров в функцию. Убедитесь, что вы используете правильный идентификатор (ID) в зависимости от того, как вы его определили в структуре данных WP All Export.

Шаг 3: Сохранение функции и тестирование

После внесения всех изменений в код, не забудьте нажать кнопку "Сохранить функции" в интерфейсе плагина WP All Export. Это является необходимым шагом для регистрации и активации вашей пользовательской функции.

Затем попробуйте выполнить предварительный просмотр вашего экспорта, нажав соответствующую кнопку. Если вы сделали все правильно, ошибка "An unknown error occurred" больше не должна появляться.

Шаг 4: Проверка и отладка

Если после выполнения указанных действий проблема все еще сохраняется, выполните следующие действия для отладки:

  1. Включение отладки:
    В файл wp-config.php добавьте следующие строки для включения отладки WordPress:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
  2. Проверка логов:
    После активации отладки, выполните экспорт снова и проверьте файл отладки debug.log, который обычно находится в каталоге /wp-content/. Это может помочь выявить, в чем конкретно заключается ошибка.

Заключение

Правильная реализация пользовательской функции и ее корректный вызов в пользовательском поле экспорта помогут вам успешно извлечь данные из вашей базы данных для последующего экспорта в XML или CSV. Надеюсь, предложенные рекомендации помогут вам добиваться высоких результатов в вашей работе с WordPress и плагином WP All Export Pro. Если у вас возникнут дальнейшие вопросы, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...