WordPress代码插入文章函数:wp_insert_post
- 格式:pdf
- 大小:80.74 KB
- 文档页数:3
学习本教程,需要:
对PHP,WP,CSS,PS有一定的基础,懂得初步的应用。
你是一个想要表现自己的家伙,并且不想再使用别人制作的主题。
你要有耐心,细心,细心,耐心
WP 主题简介
在详细分解代码之前,我们还是要先了解一下WP主题的大致情况。一个 WP 的主题是由几个 templates 文件组成的,每一个主题必有的二个文件是:index.php 和 style.css,除此之外还有一些其它的文件(不是必须),它们和 index.php 文件间存在优先级关系,如果它们存在,WP 模板系统就会调用它们显示相应的页面,否则模板系统会调用 index.php 来显示。
它们有可能是以下文件:
single.php – 单一日志文件,用于显示单一日志
page.php — 页面模板文件,用于显示静态页面
archive.php — 存档文件,用于显示存档页面
category.php — 类别文件,用于显示类别页面
search.php — 搜索文件,用于显示搜索结果
404.php — 错误文件,用于显示404页面
comments.php — 评论文件,用于显示评论和评论框
index.php
首先制作index.php,我们知道在一个网页中,代码主要分为二部分,一个是页头信息,一个是页面内容。
………页头信息
………页面内容
每个主题的页头信息都是几乎一样,具体可以查看默认模板的 header.php 文件(为保证所有页面的页头信息的一致性,所有页头信息都放在 header.php 文件)。
接下来我们谈下一话题,关于母猪的产后护理……(我学的太杂了,都弄混了) 我们来谈一下body中的内容。它包含四个部分,每一部分都可以叫做一个集成模块,其实一个主题就是由不同的模块构成,模块又是由不同的模块构成。
header WP 的顶部,显示博客的名字与描述,放置导航栏,搜索栏等等。
有些文章我们并不需要搜索引擎收录并且被引用,只想留给网站用户查看,那么如何实现这一功能了,难道只能通过robots的编辑来提示不抓取吗?那样的话搜索引擎也有可能会直接抓取的。
方法也给大家附上!
具体怎么实现WordPress 对搜索引擎隐藏特定的文章呢?废话不多说,直接上PHP代码,放到当前主题的functions.php中即可使用(用UTF-8编码另存为):
// 需要说明的是,如果你的WordPress站点开启了页面缓存,此功能无效
function ludouse_add_custom_box() {
if (function_exists('add_meta_box')) {
add_meta_box('ludou_allow_se', '搜索引擎', 'ludou_allow_se', 'post', 'side', 'low');
add_meta_box('ludou_allow_se', '搜索引擎', 'ludou_allow_se', 'page', 'side', 'low');
}
}
add_action('add_meta_boxes', 'ludouse_add_custom_box');
function ludou_allow_se() {
global $post;
//添加验证字段
wp_nonce_field('ludou_allow_se', 'ludou_allow_se_nonce');
$meta_value = get_post_meta($post->ID, 'ludou_allow_se', true);
if($meta_value)
echo ' 屏蔽搜索引擎';
else
echo ' 屏蔽搜索引擎';
}
// 保存选项设置
function ludouse_save_postdata($post_id) {
wordpress中的wpdb
$wpdb变量
封装好的数据库操作类
存放位置wp-db.php
$wpdb->insert()
描述:向数据库中插入一条数据
$wpdb->insert($table,$date,$format);
$table 插入的表名
$date 插入的数据,数组格式
$format 可选,插入数据的格式
$wpdb->insert_id
描述:获取自动增长ID
$wpdb->prefix
描述:获取数据表前缀
$wpdb->update()
描述:更新数据库中的数据
$wpdb->update($table,$data,$where,$format =
null,$where_format = null);
$table 要更新表的名称
$data 要更新的数据,数组格式
$where 条件,数组格式
$format 可选,更新数据的格式
$where_format 可选,条件的格式
$wpdb->get_var()
描述:从数据库中获取一条数据
$wpdb->get_var('query',column_offset,row_offset); 'query' 查询语句
column_offset 可选,列的偏移量
row_offset 可选,行的偏移量
$wpdb->query()
描述:删除数据库中数据
$wpdb->query('query');
'query' 删除语句
$wpdb->get_results()
描述:多行获取数据库中的数据
$wpdb->get_results('query',output_type);
'query' 查询语句
output_type 输出类型
【ARRAY_A 以数组形式输出】
$wpdb->get_row()
描述:单行获取数据库中的数据
$wpdb->get_row('query',output_typerow_offset);
wordpress显示用户浏览记录|调用访客最近浏览过的文章
很多网站或者商城都会有这么一个功能,就是显示访客的浏览记录,既有显示自己的浏览记录,又有显示其他访客的浏览记录。
这样一来可以很好的粘住用户,让他们找到更多更好的相关文章,提高用户黏性。
wordpress显示用户浏览记录
这里教程分两种,一种是访客显示自己的浏览记录,还有一种是显示所有访客的浏览记录。
这里先说说第一种方法,显示访客自己的浏览记录,分别有插件和代码的方法。
插件-wp-recent-views-master(汉化): 蓝奏云 百度网盘
下载之后直接安装,不要升级即可。
代码教程:
调用最近浏览过的文章,比较蛋疼的功能,原理是通过读取浏览器cookie文件,调用显示最近(360天)被访问过的10篇文章 ,需要注意的是,该功能不是统计所有浏览者最近查看过的文章,并没有写进数据库中,每个访客都有自己独有的浏览清单。
将下面代码添加到主题functions.php文件的最后:
$zg_number_of_posts = 10; // 显示篇数,默认值是10。
$zg_recognize_pages = true;/* 此行后不要编辑 */function zg_lwp_header() {if (is_single()) {
zg_lw_setcookie();} elseif (is_page()) {global$zg_recognize_pages;if ($zg_recognize_pages === true) {
zg_lw_setcookie();}}}function zg_lw_setcookie() {global$wp_query;
$zg_post_ID = $wp_query->post->ID;if (! isset($_COOKIE["WP-LastViewedPosts"])) {
$zg_cookiearray = array($zg_post_ID);} else {
如何在WordPress上添加自定义功能
WordPress是一款非常流行的内容管理系统(CMS),它可以用来快速创建和管理网站。尽管WordPress已经提供了很多强大的功能和扩展插件,但有时候我们仍然需要自定义一些功能来满足特定的需求。本文将探讨如何在WordPress上添加自定义功能。
1. 使用函数和钩子(Hooks)来添加功能
在WordPress中,我们可以使用函数和钩子来添加自定义功能。这样做是因为WordPress采用了基于钩子的架构,允许开发者在特定的时间和位置添加自定义代码。
首先,我们需要创建一个自定义功能的函数。例如,如果我们想要在网站底部添加一个版权信息,我们可以创建一个名为“custom_footer”的函数:
function custom_footer() {
echo '版权所有 ©2021 MyWebsite.保留所有权利。';
}
然后,我们需要使用钩子将这个函数添加到网站的底部。在WordPress中,有很多可以使用的钩子,如wp_footer和wp_head。在这种情况下,我们可以使用wp_footer钩子:
add_action('wp_footer', 'custom_footer'); 只需简单地将add_action函数添加到主题的functions.php文件中,我们就可以在网站的底部看到自定义的版权信息。
2. 使用插件来添加功能
除了使用函数和钩子,我们还可以使用插件来添加自定义功能。事实上,WordPress社区中有成千上万的插件供我们使用,这些插件可以帮助我们轻松地添加各种功能和特性。
例如,如果我们想要添加一个社交媒体分享按钮,我们可以使用一个叫做"Simple Social Share"的插件。我们只需在WordPress仪表板中搜索该插件,然后安装并激活它。接下来,我们可以在插件的设置页面自定义按钮的样式和位置。
这种方法非常适合那些没有编程技能的用户,因为它不需要任何编码。我们只需在插件市场中找到适合我们需求的插件,然后安装和配置即可。
WordPress 常用 Action 接口
Denis 2012年02月12日 浏览:2298
Action 即动作,WordPress 让开发者在其执行过程中会额外执行一些函数,以实现插件的目的,这个允许插件开发者自定义在某点执行函数的接口即 Action。当一个用户访问
WordPress 任意页面后,WordPress 将按顺序执行每一行代码,并在一定条件下激发
Action,执行挂在该 Action 上的函数。
以下是 WordPress 前台一个普通前台页面的Action执行过程
muplugins_loaded
plugins_loaded
load_textdomain
set_current_user
init
wp_loaded
parse_request
send_headers
parse_query
pre_get_posts
posts_selection
wp
template_redirect
get_header
wp_head
wp_enqueue_scripts
wp_print_styles
wp_print_scripts
loop_start
the_post
loop_end
get_sidebar
dynamic_sidebar
wp_meta
get_footer
wp_footer
shutdown
除了前台,后台开发也是 WordPress 插件开发的重点,以下是后台管理界面的普通执行流程。 muplugins_loaded
plugins_loaded
load_textdomain
auth_cookie_valid
set_current_user
init
wp_loaded
auth_redirect
admin_menu
admin_init
parse_request
send_headers
wp
admin_head
adminmenu
wpstocol函数 -回复
什么是wpstocol函数以及如何使用它?
WPSTOCOL函数是WordPress中的一个自定义函数,用于生成文章目录(Table of Contents)。它可以自动扫描文章中的标题,并根据标题的层级结构生成一个可导航的目录列表。通过插入WPSTOCOL函数到文章的任意位置,可以在前端展示一个美观且有序的目录。
第一步: 首先,要使用WPSTOCOL函数,我们需要在主题的functions.php文件中添加相关的代码。可以使用文本编辑器打开该文件,在文件的末尾添加以下代码:
php
注册WPSTOCOL函数
function wpstocol_shortcode(atts) {
atts = shortcode_atts(
array(
'depth' => 2,
'heading' => '目录',
'class' => 'wpstocol',
'id' => 'wpstocol'
), atts );
content = '';
content .= '
id="' .esc_attr(atts['id']) . '">';
content .= '
esc_html(atts['heading']) . '
content .= wp_list_pages('title_li=&echo=0&depth=' .
esc_attr(atts['depth']));
content .= '';
return content;
}
注册WPSTOCOL短代码
add_shortcode('wpstocol', 'wpstocol_shortcode');
第二步: 保存并上传functions.php文件到WordPress主题的文件夹中,覆盖原文件。
Wordpress4接口使用手册
一、简介
1、本接口应用于wordpress 4 POST文章发布;
2、本接口支持多用户账号发布日志,账号应具备发布权限;
3、本接口支持发布采集来的评论内容,评论用户可以免注册,详见发布参数ruser的说明;
4、本接口支持发布自定义域(参数字段);
5、本接口支持自由选择文章状态,如草稿、待审或发布;
6、本接口支持附件入库;
7、本接口支持自动缩略图;
8、wordpress 是utf8网站,请在发布规则中选择编码为UTF-8;
9、本接口基于wordpress英文原版制作,应用于其他版本时请自行测试调整;
10、接口文件无须任何改动即可使用,如果你希望增加校验或其他功能,请仔细修改;
11、3个接口文件请复制在wp-admin目录下使用;
二、安装接口
在接口文件夹中找到接口文件,如图:
请将etchk.php、etpost.php、etreply.php等接口文件复制到指定目录,远程FTP上传请使用二进制方式上传,如图:
三、配置发布规则
1、将范例发布规则文本导入ET2发布配置,或使用软件内置发布规则范例,如图:
2、将检查网址、发布网址和回复网址中的“您的网站”改为您要发布的网站网址,如图:
3、在参数取值页,填上您要发布的网站分类目录ID,分类目录ID可留空,如图:
这里查看分类目录ID:
4、填上您的博客账号、密码,注意格式,这里的账号必须具备发布日志的权限,如图:
5、您可以用免注册的用户名发布评论内容,ruser参数用于设置这类免注册的用户名,您可以在附加参数队列中填写它的值,也可以在采集规则中建立数据项采集它的值,两种方法不能同时使用,如果ruser参数为空,则使用账号密码队列中的账号发布评论。
a、在附加参数队列中的设置示范如下图:
b、在采集规则中建立“回复人”数据项采集时的发布规则对应设置示范如下图:
6、在附加参数中设置自定义参数名称,如图:
Wordpress Category分类函数、Tags标签函数详解
对Wordpress进行模板和插件设计,当然少不了要了解Wordpress的函数,就像要用C++、Java少不了API一样。本篇文章总结了Wordpress Category分类函数和Tags标签函数的使用方法。
目录模板函数集 (Category Template Tags)
(注意:所有代码的符号均需半角符号)
一、获取文章目录链接(Post Category)函数-
the_category(’arguments’);?>,多参数。
参数说明:
①分隔符(seperator),目录之间的分隔符号,可以为文字或字符,默认情况下按照无序列表的形式显示。
例子:
②层级参数(parents),如何显示子目录链接,属性值有single和multiple。
例子:
二、在RSS中显示文章的发表目录(Post Category in RSS Format)函数-
the_category_rss(’arguments’); ?>。
参数说明:
①类型(type):Feed显示类型。
例子:
三、获取页面目录名称函数(Page Category Title)函数-
single_cat_title(’prefix’,'display’); ?>,显示或返回当前页面所属目录名称。
参数说明: ①前缀(prefix),目录名称前缀,默认值:不显示任何内容。
例子:
②显示目录名称参数(display)。属性值 TRUE | FALSE
例子:
四、获取当前页目录描述(Category Description)函数
category_description(category); ?>。
参数说明:
①目录ID(category),返回目录描述,参数值类型为整数
例子:
五、显示下拉菜单形式的目录列表(Category Dropdown)函数-
insert函数
1. 什么是insert函数
在编程中,insert函数是一种用于向列表、数组或其他数据结构中插入元素的方法。它可以在指定位置将一个或多个元素插入到数据结构的特定位置,同时将原来的元素向后移动。
2. insert函数的语法
insert函数的语法通常为:
insert(index, element)
其中,index表示要插入元素的位置,element表示要插入的元素。
3. insert函数的使用示例
下面是一个使用insert函数的简单示例,演示了如何向列表中插入元素:
fruits = ['apple', 'banana', 'orange']
fruits.insert(1, 'grape')
print(fruits)
输出结果为:
['apple', 'grape', 'banana', 'orange']
在这个示例中,我们将'grape'插入到了列表fruits的索引为1的位置,原来在该位置的元素'banana'和'orange'都向后移动了一位。
4. insert函数的应用场景
4.1 在有序列表中插入元素
insert函数在有序列表中插入元素非常有用。假设我们有一个按升序排列的数字列表,现在需要向其中插入一个新的数字,但仍要保持列表的有序性。这时,我们可以使用insert函数来实现: numbers = [1, 3, 5, 7, 9]
new_number = 4
for i in range(len(numbers)):
if new_number < numbers[i]:
numbers.insert(i, new_number)
break
print(numbers)
输出结果为:
[1, 3, 4, 5, 7, 9]
在这个示例中,我们通过遍历有序列表numbers,找到第一个比new_number大的元素的位置,然后使用insert函数将new_number插入到该位置。
wordpress批量打开关闭文章评论功能代码
wordpress不能批量关闭评论功能,这里我们通过代码的方式来实现评论功能的批量开关。
WordPress默认不能批量开关文章的评论功能,如果想临时关闭或者打开Wordpress文章评论功能,可以参阅一下本文的方法。
本文通过WordPress 数据库操作WPDB对象($wpdb),对文章的评论功能进行批量操作。
将下面的代码添加到当前主题 functions.php 中:
批量打开文章的评论功能
global $wpdb;
$wpdb->query( "UPDATE wp_posts SET comment_status='open'" );
批量关闭文章的评论功能
global $wpdb;
$wpdb->query( "UPDATE wp_posts SET comment_status='close'" );
添加代码后,刷新网站任何页面即可,用后移除代码不需要保留在主题中。
WordPress相关日志-管理资料
昨晚手欠,点了一下“升级Wordpress”,于是就开始了各种忙乱,
首先是在升级前没有停用正在使用的插件,老旧插件导致Wordpress的前台、后台全部白屏。
解决办法:ftp登陆上去,将插件文件夹plugins重命名。
其次就是各插件恢复使用后,SimpleTags插件的作者没有提供更新,现有版本2.0-beta9不支持WordPress3.2,导致“相关日志”无法正常工作。
言归正传,说一下如何直接用代码实现“相关日志”的功能。
打开当前所用的模版文件夹
找到functions.php
添加如下代码:
//WordPressRelatedPosts
$wp_rp=array(
'wp_rp_date'=>false,//显示文章发布日期
'wp_rp_comments'=>false,//显示文章评论数
);
functionwp_get_random_posts($limitclause=""){
global$wpdb,$post;
$q="SELECTID,post_title,post_content,post_excerpt,post_date,comment_countFROM$wpdb->postsWHEREpost_status='publish'ANDpost_type='post'ANDID!=$post->IDORDERBYRAND()$limitclause";
return$wpdb->get_results($q);
}
functionwp_get_related_posts()
{
global$wpdb,$post,$wp_rp;
$limit=$wp_rp["limit"];
if(!$post->ID){return;}
$now=current_time('mysql',1);
null=wp_get_post_tags($post->ID);
transition_post_status 参数
在WordPress中,`transition_post_status`是一个钩子(hook),用于在文章或页面的状态转换时触发自定义功能或操作。这个钩子可以在文章或页面的状态从一个状态转换到另一个状态时被调用。
`transition_post_status`钩子接收四个参数:
1. `$new_status`:新的状态,例如'publish'、'draft'、'pending'等。
2. `$old_status`:之前的状态,例如'publish'、'draft'、'pending'等。
3. `$post`:当前文章或页面对象的WP_Post实例。
4. `$post_before`:之前的文章或页面对象的WP_Post实例。
通过使用`transition_post_status`钩子,您可以执行各种自定义操作,例如在文章发布时发送电子邮件通知、在文章从草稿状态转换为已发布状态时执行特定的数据更新等。
以下是一个简单的示例,演示了如何使用`transition_post_status`钩子:
```php
add_action('transition_post_status', 'custom_function_on_status_change', 10, 3);
function custom_function_on_status_change($new_status, $old_status, $post) {
if ($new_status == 'publish' && $old_status != 'publish' && $post->post_type == 'post') {
// 在文章从非发布状态变为发布状态时执行自定义操作
// 例如发送电子邮件通知
wp_mail('*****************','文章已发布', '您的文章已成功发布');
用WordPress来建站,我也还是初学者,下面这些模板代码对我们这些初学者来说还是挺有用的,偶尔也会对模板做些修改。
WordPress模板基本文件
style.css 样式表文件
index.php 主页文件
single.php 日志单页文件
page.php 页面文件
archvie.php 分类和日期存档页文件
searchform.php 搜索表单文件
search.php 搜索页面文件
comments.php 留言区域文件(包括留言列表和留言框)
404.php 404错误页面
header.php 网页头部文件
sidebar.php 网页侧边栏文件
footer.php 网页底部文件
WordPress Header头部 PHP代码
注: 也就是位于和之间的PHP代码
网站标题
日志或页面标题
WordPress主题样式表文件style.css的相对地址
WordPress博客的Pingback地址
WordPress主题文件的相对地址
博客的Wordpress版本
WordPress博客的Atom地址
WordPress博客的RSS2地址
WordPress博客的绝对地址
WordPress博客的名称
网站的HTML版本
网站的字符编码格式
WordPress 主体模板 PHP代码
日志内容
确认是否有日志
如果有,则显示全部日志
结束PHP函数”while”
结束PHP函数”if”
header.php文件的内容
sidebar.php文件的内容
footer.php文件的内容
显示格式为”02-19-08″的日期
显示一篇日志的留言链接
显示一篇日志或页面的标题
显示一篇日志或页面的永久链接/URL地址
显示一篇日志或页面的所属分类
显示一篇日志或页面的作者
显示一篇日志或页面的ID
显示一篇日志或页面的编辑链接
wordpress 运行原理和流程
下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!
并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!
Download tips: This document is carefully compiled by theeditor.
I hope that after you download them,they can help yousolve
practical problems. The document can be customized andmodified
after downloading,please adjust and use it according toactual needs,
thank you!
In addition, our shop provides you with various types ofpractical
materials,such as educational essays, diaryappreciation,sentence
excerpts,ancient poems,classic articles,topic composition,work
summary,word parsing,copy excerpts,other materials and so on,want
to know different data formats andwriting methods,please pay
attention!
深入理解WordPress:运行原理与流程解析
post_randomize的执行顺序
Post_randomize是一个用于Wordpress网站的插件,可以在文章发布时随机化显示的顺序。以下是其执行顺序的重新整理:
1. 安装并激活插件
在Wordpress网站上安装并激活Post_randomize插件,可从插件市场或手动安装。
2. 编辑文章并插入插件代码
在文章编辑器中,插入Post_randomize插件代码,这个代码通过调用插件函数来实现随机顺序功能。可以在文章编辑器中随意安置代码。
3. 发布文章并查看效果
发布文章后,转到前端页面查看效果。你会发现文章的部分内容是以随机顺序展示的。
4. 适配自己的主题
某些主题可能需要对Post_randomize进行调整适配。例如,需要增加css样式,以实现更好的展示效果。
5. 编辑参数
打开Post_randomize设置面板,修改参数。比如可以设置可随机化的内容块数目,以及每一个内容块随机时长等。
6. 调试和维护
当有更新或者故障时,需要进行调试和维护。选择适当的调试和排除方法,并进行及时处理。
通过Post_randomize插件,我们可以为我们的文章带来更多的变化和惊喜。同时,随机化的文章阅读体验也赢得了越来越多的用户认可。
WordPress代码插⼊⽂章函数:wp_insert_post
【描述】
该函数可在数据库中插⼊⽂章(及页⾯)。它可以进⾏处理变量,检查操作,填充⽇期/时间等缺失变量等⼯作。该函数以对象作为变量,返回已创建⽂章的编号(出错时返回
0)。
【使⽤⽅法】
【参数】
$post
(array) (必需) ⼀个⽂章对象. 与数据库wp_posts表中的字段⼀⼀对应
默认: ⽆
重要: 如果设置$post[‘ID’]的值,将不会创建 这个ID的⽂章. 设置这个值将会更新这个ID的⽂章. 简单的说,创建⼀个⽂章 $post[‘ID’] 必须为空或不设置这个值.
$post = array(
'ID' => [ ] //需要更新的⽂章编号
'menu_order' => [ ] //如果新⽂章是页⾯,设置显⽰顺序
'comment_status' => [ 'closed' | 'open' ] // 评论的状态,'closed'关闭评论.
'ping_status' => [ 'closed' | 'open' ] // ping的状态,'closed' 关闭 pingbacks和trackbacks
'pinged' => [ ? ] //该⽂章被ping到的地址
'post_author' => [ ] //作者编号
'post_category' => [ array(, <...>) ] //⽂章归类数组
'post_content' => [ ] //⽂章内容,必填
'post_date' => [ Y-m-d H:i:s ] //⽂章编辑⽇期
'post_date_gmt' => [ Y-m-d H:i:s ] //⽂章编辑GMT⽇期
'post_excerpt' => [ ] //摘要信息
'post_name' => [ ] // (slug) ⽂章别名
'post_parent' => [ ] //新⽂章的⽗⽂章编号
'post_password' => [ ? ] //⽂章浏览密码
'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' ] //新⽂章的状态
'post_title' => [ ] //⽂章标题,必填
'post_type' => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] //⽂章类型:⽂章、页⾯、链接、菜单、其他定制类型
'tags_input' => [ ', , <...>' ] //标签字符串
'to_ping' => [ ? ] //该⽂章需要ping到的地址
'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) ] // 附加注释数组
);
$wp_error
(布尔型) (可选) 失败时是否返回WP_Error对象
默认: false
【返回的值】
若⽂章成功加⼊数据库,返回⽂章编号。否则返回0.
【使⽤⽅法】
【例⼦】
// 创建⼀个⽂章对象
$my_post = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(8,39)
);
//⼊库
wp_insert_post( $my_post );
【安全】
函数会⾃动过滤和检查⽂章信息的合法性,不需要⽤户⾃⼰来额外处理
【源码位置】
wp_insert_post() 位于 wp-includes/post.php
/**
* Insert a post.
*
* If the $postarr parameter has 'ID' set to a value, then post will be updated.
*
* You can set the post date manually, but setting the values for 'post_date' * and 'post_date_gmt' keys. You can close the comments or open the comments by
* setting the value for 'comment_status' key.
*
* The defaults for the parameter $postarr are:
* 'post_status' – Default is 'draft'.
* 'post_type' – Default is 'post'.
* 'post_author' – Default is current user ID ($user_ID). The ID of the user who added the post.
* 'ping_status' – Default is the value in 'default_ping_status' option.
* Whether the attachment can accept pings.
* 'post_parent' – Default is 0. Set this for the post it belongs to, if any.
* 'menu_order' – Default is 0. The order it is displayed.
* 'to_ping' – Whether to ping.
* 'pinged' – Default is empty string.
* 'post_password' – Default is empty string. The password to access the attachment.
* 'guid' – Global Unique ID for referencing the attachment.
* 'post_content_filtered' – Post content filtered.
* 'post_excerpt' – Post excerpt.
*
* @since 1.0.0
* @uses $wpdb
* @uses $wp_rewrite
* @uses $user_ID
* @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
* @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
* @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before returning.
* @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database update or insert.
* @uses wp_transition_post_status()
*
* @param array $postarr Elements that make up post to insert.
* @param bool $wp_error Optional. Allow return of WP_Error on failure.
* @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
*/
function wp_insert_post($postarr, $wp_error = false) {
global $wpdb, $wp_rewrite, $user_ID;
$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,
'post_content' => '', 'post_title' => '');
$postarr = wp_parse_args($postarr, $defaults);
unset( $postarr[ 'filter' ] );
$postarr = sanitize_post($postarr, 'db');
// export array as variables
extract($postarr, EXTR_SKIP);
// Are we updating or creating?
$update = false;
if ( !empty($ID) ) {
$update = true;
$previous_status = get_post_field('post_status', $ID);
} else {
$previous_status = 'new';
}
if ( ('' == $post_content) && ('' == $post_title) && ('' == $post_excerpt) && ('attachment' != $post_type) ) {
if ( $wp_error )
return new WP_Error('empty_content', __('Content, title, and excerpt are empty.'));
else
return 0;
}
if ( empty($post_type) )
$post_type = 'post';
if ( empty($post_status) )
$post_status = 'draft';
if ( !empty($post_category) )
$post_category = array_filter($post_category); // Filter out empty terms
// Make sure we set a valid category.
if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
// 'post' requires at least one category.
if ( 'post' == $post_type && 'auto-draft' != $post_status )