wp_insert_post 插入文章到数据库-做投稿或者前端表单时使用
文 / @UTHEME
函数描述
此函数的作用是插入文章(或页面、自定义文章类型)到数据库,插入之前,会净化一些变量,做一些检查,补全一些缺失的必需数据(如日期/时间)。此函数需要一个数组作为参数,插入成功后,返回插入文章的ID(插入失败返回0)。
使用方法
<?php wp_insert_post( $post, $wp_error ); ?>
函数参数
参数 | 数据类型 | 是否必需 | 描述 | 默认值 |
---|---|---|---|---|
$post | 数组 | 是 | 包含文章数据的数组,数组元素和wp_posts数据表中的数据列是一对一关系 | None |
重要:为$post[‘ID’]设置一个值将不会创建ID为该值的文章,而是更新ID为该值的文章,也就是说,要想插入一篇新文章,$post[‘ID’]必须为空,或者压根不设置。
文章数组的内容取决于你对文章默认值的信任程度,下面是所有文章数组元素的简短描述。
$post=array(
'ID'=>[<postid>]//如果需要更新文章,设置id为需要更新文章的id,否则不要设置此值
'post_content'=>[<string>]//文章内容,也就是可视化编辑器里面的输入的内容
'post_name'=>[<string>]//文章的别名,就是URL里面的名称
'post_title'=>[<string>]//文章标题
'post_status'=>['draft'|'publish'|'pending'|'future'|'private'|customregisteredstatus]//文章状态,默认'draft'.
'post_type'=>['post'|'page'|'link'|'nav_menu_item'|customposttype]//文章类型,默认为'post'.
'post_author'=>[<userID>]//文章作者的ID,默认为当前登录的用户ID
'ping_status'=>['closed'|'open']//是否允许Pingbacks或trackbacksallowed,默认为'default_ping_status'设置的值。
'post_parent'=>[<postID>]//文章的父级文章ID,默认为0,顶级文章。
'menu_order'=>[<order>]//如果新文章为一个页面,可以设置一个页面序号,默认为0。
'to_ping'=>//空格或回车分隔的需要ping的url列表,默认为空字符串。
'pinged'=>//空格或回车分隔的已经ping过的url列表,默认为空字符串。
'post_password'=>[<string>]//文章密码,默认为空字符串。
'guid'=>//不要管这个,WordPress会自动处理。
'post_content_filtered'=>//不要管这个,WordPress会自动处理。
'post_excerpt'=>[<string>]//文章摘要。
'post_date'=>[Y-m-dH:i:s]//文章发布时间。
'post_date_gmt'=>[Y-m-dH:i:s]//GMT格式的文章发布时间。
'comment_status'=>['closed'|'open']//是否允许评论,默认为'default_comment_status'的值,或'closed'。
'post_category'=>[array(<categoryid>,...)]//文章分类目录,默认为空
'tags_input'=>['<tag>,<tag>,...'|array]//文章标签,默认为空
'tax_input'=>[array(<taxonomy>=><array|string>,<taxonomy_other>=><array|string>)]//文章的自定义分类法项目,默认为空。
'page_template'=>[<string>]//页面模板文件的名称,如,template.php,默认为空。
);
注意
- post_name,post_title,post_content,和post_excerpt为必需的元素。
- ‘post_status’:如果设置了post_status为‘future’,你还必须指定post_date值,这样WordPress才能知道什么时候发布你的文章,更多信息参见文章状态转换。
- ‘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’,将尝试设置页面,如果设置失败,此函数将返回一个WP_Error对象或0,然后在最终操作之前停止。如果post_type不是‘page’,此参数将被忽略,你可以通过调用update_post_meta()设置 ‘_wp_page_template’的值为不是页面的文章类型设置页面模板。
$wp_error(bool)(optional)失败时允许返回一个WP_Error对象。默认:false
返回值
如果文章成功插入了数据库,将返回插入的新文章ID,如果失败,将返回0或一个WP_Error对象(如果$wp_error设置为true)。
使用示例
在调用wp_insert_post()之前,我们需要创建一个包含必要文章元素的数组,wp_insert_post()将会使用默认值自动填充一些文章元素,但是,用户必须提供一个文章标题和内容,否则,将会出现数据库错误导致插入文章失败。
下面的例子中,我么设置了posttitle,content,status,author,和postcategories,除了这些,我们可以根据上面的列表添加更多的文章元素键值对,以匹配<ahref="https://www.wpzhiku.com/understanding-working-posts-wordpress

相关文章
-
盘点2023年依然好用的4款WordPress轻社区主题 2023-05-29 08:00:54
-
盘点2023年最好用的三款wordpress知识库主题 2023-05-29 08:00:26
-
个人网站选择WordPress还是Typecho? 2023-05-28 23:33:13
-
wordpress建外贸B2C独立站的五大优势 2023-05-28 23:05:49
-
盘点2023年依然好用的3款wordpress文档主题 2023-05-28 23:02:19
-
盘点2023年依然好用的3款wordpress外贸网站主题 2023-05-28 22:59:41
-
盘点2023年依然好用的3款wordpress电商主题 2023-05-28 22:56:05
-
wordpress后台地址是多少(附:后台地址修改教程) 2023-05-28 22:54:15
-
盘点2023年依然好用的3款wordpress笔记主题 2023-05-28 22:51:13
-
开源wordpress主题:kratos 介绍 2023-05-28 22:47:46