2013-07-16 8 views
1

Я использую wp_insert_post для массового ввода сообщений в Wordpress, в соответствии с http://codex.wordpress.org/Function_Reference/wp_insert_post кажется, что метод делает много манипуляций с тегами для предоставленного контента, например, он заменит тег <br>, если он найдет символ строки строки \n. Интересно, как мы можем отключить эту функцию, так как в моем случае у меня есть все содержимое, предварительно обработанное, и я хочу, чтобы Wordpress воспринимал их как есть. Линии kses_remove_filters() и 'post_content_filtered' => true, - это мои попытки решить эту проблему, но, похоже, она не работает.Как управлять поведением wp_insert_post?

kses_remove_filters(); 
$my_post = array(
'post_title' => wp_strip_all_tags($json_str['title'][0]), 
'post_content' => $json_str['content'], 
'post_date' => $json_str['pdate'], 
'post_name' => $json_str['alias'][0], 
'post_status' => 'publish', 
'post_author' => 1, 
'post_category' => array(2, $catid), 
'post_content_filtered' => true, 
); 
wp_insert_post(); 

ответ

0

Из документации:

wp_insert_post() передает данные через sanitize_post(), которая сама по себе обрабатывает всю необходимую дезинфекцию и проверки (kses и т.д.).

В wp-includes/post.php линии ~ 394, комментарии эту строку:

$_post = sanitize_post($post, 'raw'); 

Но это вообще плохая идея hack core files.

+0

выглядит так, что предыдущая строка проверяет 'if (empty ($ post-> filter)', может быть, мы можем просто установить это поле вместо того, чтобы взломать файлы ядра? –

Смежные вопросы