Intereting Posts
Гифы, отображающие мягкие? Как найти галереи WordPress Nextgen, которые не используются в сообщениях WordPress? Сообщение 2 Поиск по сайту WordPress Получить постоянную ссылку Как заставить WordPress перенаправить на канонические постоянные ссылки? У CSS WordPress есть Grids? Ограничить количество пользователей, возвращаемых при сортировке пользователей по последним функциям сообщений разбиение на страницы разбито – нажатие следующих дисплеев "страница не найдена" Пользовательский запрос с несколькими значениями мета-ключа Как создать Shortcode с зависанием и сложными параметрами Add_image_size не создает правильный размер Статическая исходная HTML-страница Использование правил в сообщениях Как изменить размеры изображения заголовка на двадцать семнадцать тем (на страницах, кроме домашней страницы) Получить идентификатор категории из категории slug (не работает)

WordPress, удаляющий атрибуты данных для запланированного сообщения

Привет, я использую smarty templating engine в wordpress для генерации HTML, как показано ниже:

<li> <div class="checkbox_container" data-asin="B0009Y7APU"><input type="checkbox" class="ecom_compare_products" data-asin="B0009Y7APU" value="B0009Y7APU"/> </div> <div class="small_img_container"><img class="related_product_image" src="img.jpg" alt="Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)"> </div> <div class="title_container"><a href="">Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)</a> </div> </li> 

Проблема в том, что WordPress удаляет атрибуты данных из этой разметки, когда публикация публикуется. Надпись выше – это то, что я на самом деле получил, когда отправил электронное письмо себе.

 $post_content = $smarty->fetch( 'product_detail.tpl' ); wp_mail('mymail@gmail.com', 'debug posting of products', 'content: ' . $post_content); $post = array( 'post_title' => $item_name, 'post_content' => $post_content, 'post_type' => 'post', 'tags_input' => $amazon_keywords, 'comment_status' => $allow_comments, 'ping_status' => $allow_pingbacks, 'post_status' => 'publish' ); wp_insert_post($post); 

Но когда я редактировал опубликованное сообщение, я получил то, что получил:

  <li> <div class="checkbox_container"></div><div class="small_img_container"> <img class="related_product_image" src="img.jpg" alt="Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)"> </div> <div class="title_container"> <a href="">Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)</a> </div> </li> 

Это действительно странно. У меня нет идеи, как получилось так. Но то, что еще более странно, заключается в том, что это происходит только тогда, когда публикация публикуется с использованием запланированного события, которое я вызываю, вызывая его из AJAX. Код для mons_post_product – это фактическое опубликование сообщения.

 add_action('ecom_scheduler', 'mons_post_product'); function ecom_schedule_event(){ wp_schedule_single_event(time(), 'mons_scheduler'); } add_action('wp_ajax_schedule', 'mons_schedule_event'); add_action('wp_ajax_nopriv_schedule', 'mons_schedule_event'); 

При подключении метода в admin_menu нет проблем:

 add_action('admin_menu', function(){ mons_post_product(); }); 

Есть идеи?

Нашел ответ. Я надеюсь, что это будет полезно для других, которые могут иметь эту проблему в будущем. Все, что вам нужно сделать, это удалить фильтр content_save_pre и content_filtered_save_pre это приведет к удалению всех фильтров содержимого входных форм Kses.

 //temporarily disable remove_filter('content_save_pre', 'wp_filter_post_kses'); remove_filter('content_filtered_save_pre', 'wp_filter_post_kses'); wp_update_post($post); //bring it back once you're done posting add_filter('content_save_pre', 'wp_filter_post_kses'); add_filter('content_filtered_save_pre', 'wp_filter_post_kses'); 

Это также работает с wp_insert_post .