WordPress使用【前端投稿】功能时为用户怎么添加插入文章标签

news2024/11/17 12:42:39

        在使用Wordpress做前端投稿功能的时候,可能需要用户填写文章标签,在插入文章的时候很多人不知道怎么把这些标签插入进去,下面这篇文章来为大家带来WordPress使用前端投稿功能时插入文章标签方法

 

     在Wordpress里   wp_insert_post 此函数的作用是插入文章(或页面、自定义文章类型)到数据库,插入之前,会净化一些变量,做一些检查,补全一些缺失的必需数据(如日期/时间)。此函数需要一个数组作为参数,插入成功后,返回插入文章的 ID(插入失败返回 0)。使用插入文章中的 tags_input 参数配置就可以了,可以参考如下代码:

$tougao = array(
    'ID' => $post_id,
    'post_title' => $title,
    'post_content' => $content,
    'post_category' => array($zhuanlan),
    'tags_input' => $tags,
//格式如:array("mobantu,mbt"),所以变量$tags应该是个数组形式,也就是要求从投稿表单中获取到的填入的标签变成数组形式赋值给变量$tags
    'post_author' => $current_user_id,
    'post_status' => 'pending',
);
$status = wp_insert_post( $tougao );

        上面是 WordPress 前端投稿时怎么插入文章标签 代码片段,用到的是 wp_insert_post 函数,下面我们具体讲下 wp_insert_post 函数。

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

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

$post = array(
  'ID'             => [ <post id> ] // 如果需要更新文章,设置id为需要更新文章的id,否则不要设置此值
  'post_content'   => [ <string> ] // 文章内容,也就是可视化编辑器里面的输入的内容
  'post_name'      => [ <string> ] // 文章的别名,就是URL里面的名称
  'post_title'     => [ <string> ] // 文章标题
  'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] // 文章状态,默认 'draft'.
  'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] // 文章类型,默认为'post'.
  'post_author'    => [ <user ID> ] // 文章作者的ID,默认为当前登录的用户ID
  'ping_status'    => [ 'closed' | 'open' ] // 是否允许 Pingbacks 或 trackbacks allowed,默认为'default_ping_status' 设置的值。
  'post_parent'    => [ <post ID> ] // 文章的父级文章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-d H:i:s ] // 文章发布时间。
  'post_date_gmt'  => [ Y-m-d H:i:s ] // GMT格式的文章发布时间。
  'comment_status' => [ 'closed' | 'open' ] // 是否允许评论,默认为 'default_comment_status'的值,或'closed'。
  'post_category'  => [ array(<category id>, ...) ] // 文章分类目录,默认为空
  '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’ 的值为不是页面的文章类型设置页面模板。

如果文章成功插入了数据库,将返回插入的新文章 ID,如果失败,将返回 0 或一个 WP_Error 对象(如果$wp_error 设置为 true)

使用示例

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

        下面的例子中,我么设置了 post title, content, status, author, 和 post categories,除了这些,我们可以根据上面的列表添加更多的文章元素键值对,以匹配 wp_posts 数据表中的数据列。

// 创建文章对象
$my_post = array(
  'post_title'    => '我的测试文章',
  'post_content'  => '这是一个测试文章。',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(8,39)
);
 
// 插入文章到数据库

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

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

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

$defaults = array(
  'post_status'           => 'draft', 
  'post_type'             => 'post',
  'post_author'           => $user_ID,
  'ping_status'           => get_option('default_ping_status'), 
  'post_parent'           => 0,
  'menu_order'            => 0,
  'to_ping'               =>  '',
  'pinged'                => '',
  'post_password'         => '',
  'guid'                  => '',
  'post_content_filtered' => '',
  'post_excerpt'          => '',
  'import_id'             => 0

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

更多信息参见:wp_set_post_terms()

安全问题

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

        因为一些原因,你可能需要移除文章标题或其他字段中的 HTML, JavaScript, 和 PHP 代码,奇怪的是, WordPress 竟然没有自动处理这些事情,不过我们可以使用 wp_strip_all_tags() 函数(WordPress 2.9 以后可用)轻松的搞定,这在提交前端表单的时候,特别有用。

// 创建文章对象
$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 )
);
 
// 插入文章到数据库
wp_insert_post( $my_post );

到此结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3核心笔记

文章目录 1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性 一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建 二、常用 Composition API1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3.0的响应式 5…

冠达管理:夜盘是什么意思?

跟着现代社会的快节奏开展&#xff0c;股票商场的运营也因而发生了相应的改变。夜盘是指在正常的买卖时刻外特别敞开的买卖商场&#xff0c;为出资者供给更多的买卖时刻和机会。夜盘的概念在我国自2002年引入以来逐渐被越来越多的出资者所熟知。那么夜盘究竟是什么&#xff1f;…

Collection 中的简单命令

一、list 集合常用的方法 LIst&#xff1a;元素存取有序、可以保存重复元素、有下标。可以存储 null 值。 ArrayList&#xff1a;底层数组结构&#xff0c;有 index&#xff0c;查询快 LinkList&#xff1a; 底层链表结构&#xff0c;增删快 添加 //确保此集合包含指定的元素…

操作系统—进程管理

这里写目录标题 进程特点并行和并发进程的状态进程的控制结构PCB包含什么信息 进程上下文切换进程上下文切换发生的场景 进程的通信方式 线程什么是线程线程的优缺点进程线程的区别线程的上下文切换线程的实现用户线程和内核线程的对应关系 用户线程如何理解、优缺点内核线程如…

在Echarts中的tooltip上添加点击按钮

需求&#xff1a; 在Echarts的tooltips中添加点击按钮并可以鼠标悬停点击该按钮 功能实现&#xff1a; 在option中的tooltip添加enterable: true的属性&#xff0c;表示鼠标可以移入tooltip中再在formatter中添加 <button onclick"onTooltipsFun()" stylecursor:…

protobuf 2定义string常量

背景 protobuf 2中定义的enum枚举值必须为数字类型&#xff0c;故不支持string类型&#xff0c;但有些业务场景又确实需要定义string常量。 目标 在protobuf 2中定义string常量。 方案 思路&#xff1a;通optional default实现string常量。 细节&#xff1a; 1、protobu…

直击HDC展区现场,华为天气开启天气+生活新方式

备受瞩目的HDC 2023 大会正式举办&#xff0c;华为天气携气象领域最新成果展现在大会现场&#xff0c;经过在线下展区实际体验过后&#xff0c;我被天气服务卡强势“种草”了。 天气与人们生活息息相关&#xff0c;面对日益复杂的天气场景&#xff0c;简单的“打开APP看天气”…

手搓单链表

文章目录 前言一、链表和顺序表的区别二、什么是单链表单链表分类单链表的结构 三、带头不循环单链表1.单链表的结构体2.带头不循环单链表的初始化和销毁3.带头不循环单链表的头插&#xff0c;尾插和打印4.带头不循环单链表的头删和尾删5.带头不循环单链表的查找&#xff0c;指…

冠达管理:创新药概念强势拉升,康希诺大涨超15%

立异药概念9日盘中强势拉升&#xff0c;到发稿&#xff0c;昊帆生物“20cm”涨停&#xff0c;康希诺大涨超15%&#xff0c;翰宇药业涨近13%&#xff0c;德展健康涨停&#xff0c;泰格医药、药石科技涨超7%。 康希诺昨日晚间公告&#xff0c;8月7日&#xff0c;公司与 AstraZene…

使用go获取链上数据之主动拉取-搭建环境(一)

使用go获取链上数据之主动拉取-搭建环境&#xff08;一&#xff09; 1、配置文件1.1、新建配置文件1.2、新建setting.go文件1.3、新建config.go文件 2、全局变量配置2.1、新建global.go2.2、初始化配置2.3、验证配置 在我们实际开发项目中&#xff0c;很多时候都需要从链上获取…

基于Selenium模块实现无界面模式 执行JS脚本

此篇文章主要介绍如何使用 Selenium 模块实现 无界面模式 & 执行JS脚本(把滚动条拉到底部)&#xff0c;并以具体的示例进行展示。 1、Selenium 设置无界面模式 创建浏览器对象之前&#xff0c;创建 options 功能对象 &#xff1a;options webdriver.ChromeOptions() 添加…

SciencePub学术 | 传感器类重点SCIE征稿中

SciencePub学术 刊源推荐: 传感器类重点SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 传感器类重点SCIE 【期刊简介】IF&#xff1a;2.0-2.5&#xff0c;JCR3区&#xff0c;中科院4区&#xff1b; 【版面类型】正刊&#xff1…

【UE4 RTS】03-Camera Zoom

前言 本篇通过对CameraPawn的弹簧臂组件的长度进行增减&#xff0c;从而实现了视角的远近缩放控制。 效果 步骤 1. 在项目设置中添加如下操作映射 2. 打开玩家控制器“RTS_PlayerController_BP”&#xff0c;在上一篇中我们已经实现了CameraPawn的移动功能&#xff1a; 这里…

OpenLayers实战,OpenLayers实现气象台风飓风运动轨迹运动动画,可调台风旋转速度和运动速度,静态图片旋转动画

专栏目录: OpenLayers实战进阶专栏目录 前言 本章使用OpenLayers实现气象中常用的台风或者飓风运动轨迹动画,支持调整台风图标旋转速度和运动速度。 不同的台风可以设置不同的运动速度和旋转速度,也可以通过变量控制图片不旋转。 本章图片使用静态png图片,并非gif动态图。…

棒球电影产业建设·野球1号位

棒球电影产业建设 1. 引言 棒球电影产业在美国和全球的历史发展概述 自20世纪初&#xff0c;棒球电影产业在美国开始起步&#xff0c;以一种富有创意的方式将体育和娱乐结合起来&#xff0c;开创了一种全新的娱乐形式。这些电影为观众提供了一个了解棒球运动的独特视角&#…

FFmpeg 硬编码VideoToolBox流程

介绍 FFmpeg已经提供对 VideoToolBox 的编解码支持&#xff1b;主要涉及到的文件有videotoolbox.c、videotoolbox.h、videotoolboxenc.c、ffmepg_videotoolbox.c。在编译 FFmpeg 源码时&#xff0c;想要支持VideoToolBox&#xff0c;在 configure 时&#xff0c;需要–enable-…

SMART司马他法则(目标管理)

S代表具体(Specific)&#xff0c;指绩效考核要切中特定的工作指标&#xff0c;不能笼统&#xff1b; M代表可度量(Measurable)&#xff0c;指绩效指标是数量化或者行为化的&#xff0c;验证这些绩效指标的数据或者信息是可以获得的&#xff1b; A代表可实现(Attainable)&…

CSV文件编辑器——Modern CSV for mac

Modern CSV for Mac是一款功能强大、操作简单的CSV文件编辑器&#xff0c;适用于Mac用户快速、高效地处理和管理CSV文件。Modern CSV具有直观的用户界面&#xff0c;可以轻松导入、编辑和导出CSV文件。它支持各种功能&#xff0c;包括排序、过滤、查找和替换&#xff0c;使您能…

1.RuoYi-Vue前后端分离版本启动

1.代码下载 去若依官网&#xff0c;选择RuoYI前后端分离版: 下载地址&#xff1a;https://gitee.com/y_project/RuoYi-Vue 2.依赖环境的部署 1.Mysql 2.Redis安装部署 : https://blog.csdn.net/qq_27860623/article/details/132168382 3.Idea打开后端服务 用Idea打开后端的…

隐秘通信-使用PingTunnel搭建ICMP隧道实验

目录 引言 实验目的 实验内容 基础知识 ICMP协议简介 ICMP隧道简介 ICMP隧道搭建工具介绍 PingTunnel简介 实验过程 前置准备 PingTunnel搭建ICMP隧道步骤 CentOS 7更换阿里源 CentOS 7安装make及词法分析工具 CentOS 7安装libpcap依赖库 CentOS 7安装PingTunnel…