Вопрос или проблема
Я пытаюсь получить данные из своей базы данных для экспорта в файл 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: Проверка и отладка
Если после выполнения указанных действий проблема все еще сохраняется, выполните следующие действия для отладки:
-
Включение отладки:
В файлwp-config.php
добавьте следующие строки для включения отладки WordPress:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
-
Проверка логов:
После активации отладки, выполните экспорт снова и проверьте файл отладкиdebug.log
, который обычно находится в каталоге/wp-content/
. Это может помочь выявить, в чем конкретно заключается ошибка.
Заключение
Правильная реализация пользовательской функции и ее корректный вызов в пользовательском поле экспорта помогут вам успешно извлечь данные из вашей базы данных для последующего экспорта в XML или CSV. Надеюсь, предложенные рекомендации помогут вам добиваться высоких результатов в вашей работе с WordPress и плагином WP All Export Pro. Если у вас возникнут дальнейшие вопросы, не стесняйтесь обращаться за помощью!