wp_insert_post неверно избегает комментариев HTML, когда они включают теги

Я работаю над написанием сценария для импорта данных из пользовательской CMS в WordPress. Как часть этого, мне нужно импортировать содержимое сообщения точно, не изменяя ничего. Тем не менее, некоторые из сообщений содержат комментарии HTML, содержащие теги, и это, кажется, запутывает WordPress.

Я переделал свой сценарий на небольшой представительский пример:

<?php $_SERVER['HTTP_HOST'] = 'localhost'; require_once('/var/www/wordpress/wp-load.php'); $post = array( 'post_content' => 'This is <!-- a comment -->', 'post_status' => 'publish' ); wp_insert_post($post); 

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

 <div class="entry-content"> <p>This is <!-- a comment --></p> </div><!-- .entry-content --> 

Но если мой комментарий содержит теги в нем (например, замените post_content с помощью This is <!-- <p>a comment</p> --> ), WordPress избегает разделителей комментариев и анализирует теги внутри. Комментарий становится видимым, и когда я просматриваю источник, он выглядит так:

 <div class="entry-content"> <p>This is &lt;!– <p>a comment</p> <p> –&gt;</p> </div><!-- .entry-content --> 

Как я могу помешать WordPress нарушать разделители комментариев и анализировать теги внутри? Для записи я на WordPress 3.3.1 в Ubuntu 12.04.

EDIT: просто попробовал это на WordPress 3.4; проблема все еще возникает.

Solutions Collecting From Web of "wp_insert_post неверно избегает комментариев HTML, когда они включают теги"

Следующая программа:

 <?php $_SERVER['HTTP_HOST'] = 'localhost'; require_once('wp-load.php'); $post = array( 'post_title' => 'HTML Escape', 'post_content' => 'This is <!-- a comment --><br/>This is <!-- <p>a comment</p> -->', 'post_status' => 'publish' ); $id = wp_insert_post($post); $post = get_post($id); var_export( esc_html( $post->post_content ) ); ?> 

Выводит в браузере следующее:

 'This is <!-- a comment --><br/>This is <!-- <p>a comment</p> -->' 

Таким образом, похоже, что ваша петля может быть той, которая меняет содержимое сообщения.