如何通过前端创建新的WordPress帖子时有一个空的帖子标题和内容

时间:2014-01-04 12:18:29

标签: php wordpress forms

我的目标是通过我创建的自定义前端表单将新的草稿帖子插入数据库。我需要帖子标题和内容为空。这可能吗?

我尝试过以下无法解决的问题:

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

$post_id = wp_insert_post( $post_data );

注意:您可以使用后端编辑器创建一个新帖子,其中包含空标题和内容,因此我想知道他们是如何在WordPress上做的。

2 个答案:

答案 0 :(得分:1)

您无法使用wp_insert_post插入空白帖子,Wordpress会使用wp_insert_post_empty_content挂钩阻止它,您可以在源代码中看到它:https://developer.wordpress.org/reference/functions/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;
}

答案 1 :(得分: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 );