!
也想出现在这里? 联系我们
广告位

WordPress 前端投稿时怎么插入文章标签

我在做 WordPress 前端投稿功能的时候,需要用户填写文章标签,前端标签的 input 已经做好,也可以获取到他的 value 值,只是在插入文章的时候不知道怎么把这些标签插入进去,wp_insert_post 此函数的作用是插入m ; %文章(或页面、自定义文章类型)到数据库,插入之前,会净% 0 7化一些变量,做一些检查,补c h [ 9全一些缺失的必需数据(如日期/时间)。此函数需要一个数组作为参数,插入成功后,返回插入文章的 ID(插入失败返回 0)。使用插入文章中的 tags_inf K iput 参数配置就可以了,d & Y K可以参考如下代码

  1. $tougao = array(n @ ^
  2. 'ID' => $post_id,
  3. 'r 1 1 I i 5post_tQ 5 I 2itle' => $title,
  4. 'post_content' => $content,
  5. 'post_category' => arI b 6 . D Hray($zhuanlan),
  6. 'p G ] ytags_input' => $tags,
  7. //格式如:array("mobantu,mbt"),所以变量$tags应该是Q D h 5个数组形式,也就是要求从投稿表单中获取到的填入的标签变成数组形式赋值给变量$tw L o $ iags
  8. 'post_author' => $current_user_id,
  9. 'post_status' => 'pending',
  10. );
  11. $status = wp_insert_post( $tougao );

上面是 WordPress 前端投稿时怎么插入文章标签 代码片段,用到的是 wp_insert_post 函; + ] , E . Q G P数,下面我们具体讲下 wp_c t I T z binsert_post 函数。

为&post['ID']设置一个值u J @ e + V将不会创建 ID 为该值的文章,而是更新 ID 为该值的文章,也就是说,要想插入一篇新文章,$post['ID']必须为空,或者压根不设置。

文章数组的内容取决于你对文章默认值的理解程度,下面是所有文章数组元素的简短描述$ h T [ j ^

  1. $post = arra; m _ 5 * F z ; =y(
  2. 'V w k o t 8 $ID' => [ <post id>b T 0 b B g ? ? ] // 如果需要更新文章,设置id为需要更新文章的id,否则不要设置此值
  3. 'post_content' => t 3 D1; &lp * : ^ 4 H . 8t;string> ] // 文章内容,也就是可视化编辑器里面的输入的内容; M ?
  4. 'post_name' =>! ` % P F [ <string> ] // 文章的别名,s ; * X ` R就是URL里面的名称
  5. 'post_title' => [ <string> ] // 文章标题
  6. 'post_statJ I h } 6 ^ Q 8 aus' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] // 文章状态,默认 'draft'.
  7. 'post_type' => [ '` O z % : 0 ( 1post' | 'page' | 'link' | 'nav_menu_item' | customa } J & w m post type l \ * _3; // 文章类型,默认为'post'.
  8. 'post_author8 O f l j | F [ %' => [ <user ID> ] // 文章作者的ID,默认为当前登录的用户ID
  9. 'ping_st] 0 Z r a Z X )atus' => [ 'closed' |= ; T 'a $ # J I ~ wopen' ] // 是否允许 Pingbacks 或 trac_ | i Q & , akbacks all6 U l & B 5 q B 3owed,默认为'default_ping_status' 设置的值。
  10. 'B d * Qpost_parent' => [ <post ID> ] // 文章的父级文章ID,默认为 0,顶级文章。
  11. 'menu_order' => [ <oa i r ] J =rder&/ ! I h ogt; ] // 如果新文章为一个页面,可以设置一个页面序号,默认为0。
  12. 'to_ping' => // 空格或回车分隔的需要ping的url列表,默认为空字符串。
  13. 'pinged' => // 空格或回车分隔的已经ping过的url列表,默认为空字符串。
  14. 'pos0 E * I Y ^t_password' => [ <strin^ k * j u jg> ] // 文章密码,默认为空字符串。
  15. 'guid'M Q [ => // 不要管这个,WordPress会自动处理。
  16. 'o S Mpost_content_filtered' => // 不要管这个,WordPrt y } x ; 9 D o +ess会自动处理。
  17. 'post_excerpi 0 = Qt' => [ <string> ] // 文章摘要。
  18. 'post_date' => [ Y-m-d H:i:s ] // 文章发布时间。
  19. 'post_date_gmt' => [ Y-m-d H:i:s ] // GMT格式的文章发布时间。
  20. 'coV . M N &mment_status' => [ 'closed' | 'open' ] // 是否允许评论,默认为 'default_comment_status'的值,或'cl( n $ ] - / aosed'。
  21. 'post_category' => [ array(<category id>, ...) ] // 文章分类目录,默认为空
  22. 'tags_input' => [ '<tag>, <tag>, ...' |? + T K a { array ] // 文章标签,默认为空
  23. 'tax_input' => [ array( <taxonomy&gtH I c 5 { N; => <array | string>, <taxonomy_other> =&) h j tgt; <array | string> ) ] // 文章的自定义分类法项目,默认为空。
  24. 'page_template' => [ <string> ] // 页面模板文件的名称,如,template.php,默认为空。
  25. );
  • post_name, post_title, pA S $ ! i f L 4 yost_content, 和 post_excerp, ( zt 为必需的元素。
  • ‘post_status’:如果设置了 post_status 为 ‘future’,你还必须指定 por J Y Kst_date 值,这样 WordPress 才能知道什么时候发布你的文章,更多信息参见 文章状态转换。
  • ; Q cpoZ 7 h _ 5 L G D 0st_category’:等效于调用 wp_set_post_categories()。
  • ‘tags_input’:等效于调用 wp_s{ 6 . wet_post_tags()。
  • ‘tax_input:等效于为数组中的每个自定义分类法调用 wp_set_post_terms(),如果当前用户没有~ + J :设置自定义分类法的权限,就必须使用 wp_set_object_terms() 代替了。
  • ‘page_template’:如果 post_type 为 ‘page+ 5 a m ) 9’,将尝试设置页面,如果设置失败,此函数将返回一个 WP_Error 对8 K b 6 $ s z E H象或 0,然后在@ - Q [ q最终操作之前停止。如果 post_type 不是 ‘page’,此参数将被忽略,你可以通过调I \ 2 7 j M用 update_post_meta() 设置‘_wp_page_template’ 的值为不是页面的文章类型设置页面模板。

; p _ N p ? c果文章成功插入了数据库,将返回插入的新文章 ID,如果失败,将w * 6 I h 4 W +返回 0 或一个 WP_Error 对象(如果$wp_error 设置为 true)

使用示例

在调用 wp_insert_post() 之前,我们需要创建一个包含必要文章元素L } B的数组,wp_insert_post() 将会使用c y 9默认值自动填充一些文章元素,但是,用户必须提供一个文章标题和内容,否则,将会出现数据库错误导致插入文章失败。

下面的例子中,我么设R M ] 9 7 G )置了 p+ X J A W lost title, content, statuz K d Z P @ J os, author, 和 post categories,除了这些,我们可以根据上面的列表添加更多的文章元素键值对,以匹配 wp_posts 数据表中的数据列。

  1. // 创建文章对象
  2. $my_post = array&_ j J H#40;
  3. 'post_title' => '我的测试文章',
  4. 'post_cp 3 ] ) Y $ ` A &ontent' => '这是一个测试文章。',
  5. 'post_status' => 'publish',
  6. 'post_author' => 1,
  7. 'post_category' => array(8,39)
  8. );
  9. // 插入文章到数据库

文章插入成功后,将返回新文章 id。

  1. $post_id = wp_insert_post( $post, $wp_error );
  2. //现在,我们可以使用 $post_id 来 add_post_meta 或 update_post_meta

上面提到的文章元素默认值为下面数组:

  1. $defaults = array(
  2. 'post_status' => 'draft',
  3. 'p/ } C 0 a % )ost_type' => 'post',
  4. 'post_author' => $user_ID,
  5. 'ping_status' => get_option('default_ping_status'),
  6. 'p~ F j b ( 5 ]ost_parent' => 0,
  7. 'menu_o^ U yrder' => 0,
  8. 'to_ping' => '',
  9. 'pz m n 2 N P B Singed' => '',
  10. 'post_pK 8 z xassword' => '',
  11. 'guid' => '',
  12. 'post_content_filtered' => '',
  13. 'post_excerpt' => '',
  14. 'import_id' => 0

分类目录应该以分类 ID 数组的形式传入,即使只需要设置一个分类目录,该参数的值也必须为数L m /组。

更多信息参见:wp_set_post_terms()

安全问题

在存入数据库之前,wp_insert_post() 先把数据传递给 sanitize_post() 处理了,也就是说,该函数已经处理了所有的数据验证和净化,我们不需要再为这些问题操心了。

因为一些原因,你可能需要移除文章标题或其他字段中的 HTML, J} ^ w } /avaScript, 和 PHP 代码,奇怪的是, WordPress 竟然没有自动处理这些事情,不过我) ? } y D : ;们可以使用 wp! ? 5 x l - U S ,_strip_alA 2 B E f \l_tags() 函数(WordPress 2.9 以后可用)轻松的搞定,这在提交前端表单的时候,特别有用。

  1. // 创建文章对象
  2. $my_post = array(
  3. 'post_title' =D N T o 5 = G> wp_strip_all_tags( $_POST['post_title'] ),
  4. 'post_content' => $_POST['post_content'],
  5. 'pos; \ d E N O R 8t_status' => 'pH 3 K ( vublish',
  6. 'post_author' => 1,
  7. 'post_category' => array( 8,39 )
  8. );
  9. // 插入文章到数据库
  10. wp_insert_post( $my_pog P a Gst );

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WooCommerce 调用商店精选特色产品代码片段

2022-8-5 14:18:17

WordPress教程

WordPress获取指定标签下的文章总数

2022-8-5 14:20:15

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索