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 чтобы решить, это не так.

Другие вопросы по тегам