WordPress函数学习之wp_insert_post()介绍和用法

wp_insert_post( array $postarr, bool $wp_error = false, bool $fire_after_hooks = true ): int|WP_Error

插入或更新一篇文章。

描述
如果$postarr参数的“ID”设置一个值,则将更新文章。

通过设置‘post_date’和‘post_date_gmt’键的值,可以手动设置发布日期。通过设置‘comment_status’键的值,可以关闭或打开评论。

另见
sanitize_post()
参数Top↑
$postarrarray必填
构成要更新或插入的文章的元素数组。
ID int
文章ID。如果等于0以外的值,则将更新具有该ID的文章。默认值为0。
post_author int
添加文章的用户的ID。默认值是当前用户ID。
post_date string
文章的日期。默认值为当前时间。
post_date_gmt string
在GMT时区中发布的日期。默认值为$post_date。
post_content string
文章内容。默认为空。
post_content_filtered string
过滤后的文章内容。默认为空。
post_title string
文章标题。默认为空。
post_excerpt string
文章摘要。默认为空。
post_status string
文章状态。默认'draft'。
post_type string
文章类型。默认值'post'。
comment_status string
文章是否可以接受评论。接受'open'或'closed'。
默认值是'default_comment_status'选项的值。
ping_status string
文章是否可以接受ping。接受'open'或'closed'.
默认值是'default_ping_status'选项的值。
post_password string
访问文章的密码。默认为空。
post_name string
文章名称。默认值是创建新文章时经过净化的文章标题。
to_ping string
空格或回车分隔的要ping的URL列表。
默认值为空。
pinged string
空格或回车分隔的已Ping的URL列表。默认为空。
post_modified string
上次修改文章的日期。默认值为当前时间。
post_modified_gmt string
上次在GMT时区修改文章的日期。默认值为当前时间。
post_parent int
为它所属的文章设置此项(如果有)。默认值为0。
menu_order int
文章的显示顺序。默认值为0。
post_mime_type string
文章的mime类型。默认为空。
guid string
用于引用日志的全局唯一ID。默认为空。
import_id int
插入新文章时要使用的文章ID。
如果指定,则不能与任何现有文章ID匹配。默认值为0。
post_category int[] 类别ID的数组。
默认为'default_category'选项的值。
tags_input array
标签名、slug或ID的数组。默认为空。
tax_input array
以分类模式的名称为键名的分类项(term)数组。
如果分类模式是分层的,则分类项列表必须是分类项ID数组或以逗号分隔的ID字符串。
如果分类模式不是分层的,分类项列表可以是包含分类项名称或slug的数组,也可以是逗号分隔的字符串。这是因为,在分层的分类模式中,子分类项可以与不同的父分类项具有相同的名称,因此连接它们的唯一方法是使用ID。默认值为空。
meta_input array
文章的meta值数组,数组的键名是文章的meta键名。默认为空。
page_template string
要使用的页面模板。
$wp_errorbool可选
失败时是否返回WP_Error。
默认:false

$fire_after_hooksbool可选
是否启用插入后的挂钩。
默认:true

int|WP_Error 成功时的文章ID。失败时的0值或WP_Error。

用法
wp_insert_post( $post, $wp_error );
注意
post_title和post_content是必填项
post_status:如果提供“future”的post_status,则必须指定post_date,以便WordPress知道何时发布您的文章。另请参见Post Status Transitions。
post_category:相当于调用wp_set_post_categories()。
tags_input:相当于调用wp_set_post_tags()。
tax_input:相当于为数组中的每个自定义分类调用wp_set_post_terms()。如果当前用户没有权限使用分类模式,则必须改用wp_set_object_terms()。
page_template: 如果post_type为‘page’,将尝试设置page template,失败时,函数将返回一个WP_Error或0,并在调用最终操作之前停止。如果post_type不是‘page’,则忽略该参数。可以通过使用‘_wp_page_template’键调用update_post_meta(),可以为非‘page’设置页面模板。
类别
类别需要作为与数据库中的类别ID匹配的整数数组传递。即使只有一个类别分配给该文章,情况也是如此。

另请参见:wp_set_post_terms()

安全
wp_insert_post() 通过sanitize_post()传递数据,它本身处理所有必要的清理净化和验证(kses等)。

因此,你不必担心这一点。

然而,您可能希望从post_title和任何其他字段中删除HTML、JavaScript和PHP标签。令人惊讶的是,WordPress不会自动执行此操作。这可以通过使用wp_strip_all_tags()函数轻松完成,在构建前端提交后表单时尤其有用。

// Create post object
$my_post = array(
'post_title' => wp_strip_all_tags( $_POST['post_title'] ),
'post_content' => $_POST['post_content'],
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array( 8,39 )
);

// Insert the post into the database
wp_insert_post( $my_post );

do_action( 'add_attachment', int $post_ID )
添加附件后触发。

apply_filters( 'add_trashed_suffix_to_trashed_posts', bool $add_trashed_suffix, string $post_name, int $post_ID )
过滤是否为与更新文章名称匹配的垃圾文章添加__trashed后缀。

do_action( 'attachment_updated', int $post_ID, WP_Post $post_after, WP_Post $post_before )
更新现有附件后触发。

do_action( 'edit_attachment', int $post_ID )
更新现有附件后触发。

do_action( 'edit_post', int $post_ID, WP_Post $post )
更新现有文章后触发。

do_action( "edit_post_{$post->post_type}", int $post_ID, WP_Post $post )
更新现有文章后触发。

do_action( 'post_updated', int $post_ID, WP_Post $post_after, WP_Post $post_before )
更新现有文章后触发。

do_action( 'pre_post_update', int $post_ID, array $data )
在数据库中更新现有文章之前立即触发。

do_action( 'save_post', int $post_ID, WP_Post $post, bool $update )
保存文章后触发。

do_action( "save_post_{$post->post_type}", int $post_ID, WP_Post $post, bool $update )
保存文章后触发。

apply_filters( 'wp_insert_attachment_data', array $data, array $postarr, array $unsanitized_postarr, bool $update )
过滤附件数据,在其更新或添加到数据库之前。

do_action( 'wp_insert_post', int $post_ID, WP_Post $post, bool $update )
保存文章后触发。

apply_filters( 'wp_insert_post_data', array $data, array $postarr, array $unsanitized_postarr, bool $update )
在将数据插入数据库之前,过滤已剪切的数据。

apply_filters( 'wp_insert_post_empty_content', bool $maybe_empty, array $postarr )
过滤是否应将文章视为“空”。

apply_filters( 'wp_insert_post_parent', int $post_parent, int $post_ID, array $new_postarr, array $postarr )
过滤文章父级-用于检查和防止层次结构循环。

投上你的一票

本文出处:老蒋部落 » WordPress函数学习之wp_insert_post()介绍和用法 | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送