2014-01-04 3 views
1

Моя цель - вставить новый черновик в базу данных с помощью специальной формы интерфейса, которую я создал. Мне нужно, чтобы заголовок сообщения и контент были пустыми. Это возможно?Как получить пустой заголовок и содержание сообщения при создании нового сообщения WordPress через интерфейс

Я попытался следующий, не работает:

$post_data = array(
    'post_title' => '', 
    'post_type'  => 'post', 
    'post_content' => '', 
    'post_status' => 'draft', 
    'post_author' => 1 
); 

$post_id = wp_insert_post($post_data); 

Примечания: Вы можете создать новую запись с помощью фонового редактор с пустым заголовком и содержанием, так мне интересно, как они ребята в WordPress делают это.

+0

Есть ли у вас какие-либо ошибки? 'wp_insert_post ($ post_data, true);' должен возвращать некоторый :) – Xavier

+0

Да, я получаю «Контент, название и выдержка» пусты. Var dumping: object (WP_Error) # 34 (2) {["errors"] => array (1) {["empty_content"] => array (1) {[0] => string (38) "Содержимое, заголовок , а отрывки пусты. " }} ["error_data"] => array (0) {}} – henrywright

ответ

0

Вы не можете вставить пустой пост с wp_insert_post, Wordpress позволит предотвратить его wp_insert_post_empty_content крючка, вы можете увидеть его в исходном коде: http://wpseek.com/wp_insert_post/

Единственный способ сделать это, чтобы преодолеть этот крюк с обычаем функция

Ниже приведен пример (source)

add_filter('pre_post_title', 'wpse28021_mask_empty'); 
add_filter('pre_post_content', 'wpse28021_mask_empty'); 
function wpse28021_mask_empty($value) 
{ 
    if (empty($value)) { 
     return ' '; 
    } 
    return $value; 
} 

add_filter('wp_insert_post_data', 'wpse28021_unmask_empty'); 
function wpse28021_unmask_empty($data) 
{ 
    if (' ' == $data['post_title']) { 
     $data['post_title'] = ''; 
    } 
    if (' ' == $data['post_content']) { 
     $data['post_content'] = ''; 
    } 
    return $data; 
} 
+0

Отличное решение. Спасибо! – henrywright

0

Существует фильтр в ядре WordPress, которые могут быть использованы, чтобы предотвратить это.

wp_insert_post_empty_content

https://developer.wordpress.org/reference/hooks/wp_insert_post_empty_content/

Что вы должны быть в состоянии использовать как:

add_filter('wp_insert_post_empty_content', '__return_false'); 

$post = wp_insert_post($post_args); 
Смежные вопросы