add_magic_quotes() не работает в WordPress
Вот код, который запускается плагином. Он передает данные файла CSV в MySQL.:
$new_post = array(
'post_title' => $row['Account Name'],
'post_content' => $row['Yellow Page Business Description'],
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'business',
'post_category' => array(0)
);
try
{
$result = wp_insert_post(add_magic_quotes($new_post), true);
if (is_wp_error($result)) {
$output .= '<p style="color:red;">ERROR LOADING CSV FILE</p>';
$output .= "<p style='color:red;'>Failed to import {$new_post['post_title']}</p>";
$output .= '<pre>'.$result->get_error_message().'</pre>';
}
else
{
$post_id = $result;
На что MySQL сообщает:
[ошибка] Ошибка базы данных WordPress У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '))) AND (cj_posts.post_password = ' ') AND cj_posts.post_type = 'business' AND ' в строке 1 для запроса SELECT DISTINCT SQL_CALC_FOUND_ROWS cj_posts.* ОТ cj_posts ВЛЕВО ПРИСОЕДИНЯЕТСЯ cj_term_relationships КАК ВКЛЮЧЕНА (cj_posts.ID = trel.object_id) ВЕРНУТЬСЯ В СОЕДИНЕНИЕ cj_term_taxonomy КАК ttax ON ( ( ttax.taxonomy = 'category') И trel.term_taxonomy_id = ttax.term_tter_t_term_terms ttax.term_id = tter.term_id) ВЛЕВО СОЕДИНЯЕТСЯ cj_comments AS cmt ON ( cmt.comment_post_ID = cj_posts.ID) WHERE 1=1 AND ( ( ((())) AND (cj_posts.post_password = '') AND cj_posts.post_type = 'business' AND (cj_posts.post_status = 'publish')) AND post_type!= 'revision') AND post_status!= 'future' ORDER BY cj_posts.post_title LIKE '% %' DESC, cj_posts.post_date DESC LIMIT 0, 10 сделано по требованию ('wp-blog-header.php'), wp, WP-> main, WP-> query_posts, WP_Query-> query, WP_Query-> get_posts
cj_ - это префикс WordPress.
Я думаю, что использование magic_quotes не работает, поэтому он передает символы из данных CSV в MySQL, которые не экранированы должным образом. Но я не уверен на 100% и не уверен, что заменить, чтобы это работало.
1 ответ
Вам не нужно использовать add_magic_quotes
, От wp_insert_post
документация:
Эта функция вставляет сообщения (и страницы) в базу данных. Он очищает переменные, делает некоторые проверки, заполняет пропущенные переменные, такие как дата / время и т. Д.
Акцент мой.
https://codex.wordpress.org/Function_Reference/wp_insert_post
add_magic_quotes
по существу перебирает массив и вызывает add_slashes
на каждом элементе. Это совершенно не нужно, так как wp_insert_post
очистит любой ввод, который он дает. Какую бы проблему вы не ожидали? add_magic_quotes
чтобы решить, это не так.