首页>建站相关>wordpress定时自动发布

wordpress定时自动发布

访问了一个博客,发现这个博客上有一个api自动推送的新闻集锦页面,每次打开页面的时候,后台会自动去请求一次api,获取到最新的数据并展现,这样就实现了内容的实时更新。但由于目前很多api都限制了使用次数,这种打开页面即请求api的方式,在站点本身访客较多的情况下,对api站点的请求次数也是非常频繁的,一旦达到了次数的上限,api拒绝响应,就可能导致后来的来访用户无法正常访问该页面。

一些自己的想法

于是就考虑了这样一个问题,如果在自己的博客上放这样一个内容,该如何处理呢?几周前参考张戈博客的文章,无插件实现了博客的sitemap时,接触到了linux的定时任务,具体实现是设置一个php文件来生成php版本sitemap页面,然后利用linux定时任务间隔一段时间后抓取这个页面并另存为xml版本的sitemap,这样就完成了一套自动化的流程。这个模式似乎也可以用在这个命题中,定时去抓取一次数据,判断该数据的更新时间,如果同最后一次自动发布的时间不同,则让php整理一下数据并自动发布一篇新的文章,如果相同,则认为这些数据已经发布过了,不再进行处理。

wp的文章发布函数

查了一下手册,wordpress确实提供了可以用来发布或者更新一篇新的文章的函数,这个函数就是“wp_insert_post”,只需要传入一个固定格式的数组,“wp_insert_post”会自动处理好同数据库的衔接。正常书写博客一般是不需要用到这个函数的,该函数经常被用于采集或是处理作者的投稿上。

wp_insert_post的参数:

  • $postarr:(数组) (必需) 组成要更新或插入的文章的元素数组
  • $wp_error:(bool) (可选)是否返回错误信息,默认值:假
  • $fire_after_hooks:(bool) (5.6.0版本添加,可选) 是否触发 after insert 钩子,默认值:真

$postarr的参数

键值 类型 数据用途
id int 如果等于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 发布状态,默认"草稿";
post_type string 文章类型,默认"发布";
comment_status string 文章是否可以接受评论。接受"打开"或"关闭",默认值是"default_comment_status"选项的值;
ping_status string 文章是否可以接受 ping,接受"打开"或"关闭",默认值是"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 文章的显示顺序,默认为;
post_mime_type string 文章的mime类型,默认为空;
guid string 用于引用文章的全局唯一id,默认为空;
import_id int 插入新文章时要使用的文章id,如果指定,则不得与任何现有文章id匹配,默认为0;
post_category array 类别id数组,默认为“default_category”选项的值;
tags_input array 标签名称、slug 或id的数组,默认为空;
tax_input array 由分类名称键入的分类术语数组。如果分类是分层的,则术语列表需要是术语id的数组或以逗号分隔的id字符串。如果分类法是非分层的,则术语列表可以是包含术语名称或 slug 的数组,或者是逗号分隔的名称或 slug 字符串。这是因为,在分层分类法中,子术语可以与不同的父术语具有相同的名称,因此连接它们的唯一方法是使用id。默认为空;
meta_input array 自定义栏目数组,默认为空。(4.4.0版本添加)

标签: wordpress

移动端可扫我直达哦~

推荐阅读

wordpress 2025-04-07

wordpress主题目录穿越导致的bug

尝试从知乎的热榜api提取数据并保存到本地,隔几个小时刷新一次,前几天运行的好好的,这几天突然发现数据有几天没有更新了。手动刷新了一下数据获取页,一直提示无需更新,将文件下载到本地测试,功能又是完好的。开了wp的debug模式,修正了...

建站相关 wordpress

wordpress 2025-03-31

wordpress 重新生成缩略图

测试wp缩略图功能的时候不小心把所有的缩略图都删掉了,但保留了原图,不想一个个重新上传以生成缩略图,就使用了这段代码,注意生成成功之后,这段代码就可以删掉了。忽然想起之前钉钉宣传的某个功能,阅后即焚~~function regener...

建站相关 wordpress

wordpress 2025-03-29

WordPress的主循环与WP_Query

WordPress的主循环和WP_Query是主题开发中最重要的两个概念,它们负责从数据库获取内容并显示在页面上。主循环 (The Loop)主循环是WordPress用来显示文章的核心机制。它是一个PHP代码结构,用于遍历当前页面请...

建站相关 wordpress

wordpress 2025-03-22

在phpstudy中为wordpress开启伪静态

原文修改主题都是在服务器上一边在线修改一边调试,用上了phpstudy后才发现自己之前的方式有多没有效率。但测试设置固定链接的时候遇到了一个问题,就是设置前也无风雨也无晴,设置后统一返回404。这个问题之前尝试搭建站点的时候也遇到过,...

建站相关 wordpress

wordpress 2025-03-17

WordPress分页中遇到404错误:posts_per_page

这个问题可能更多为主题开发者所遇见,一款推向市场的主题一般都会几经测试,应该不容易到客户手中才发现这个问题。所以网络上的相关讨论不多,博主也是调试了几天才大致有了一些思路:后台的默认参数在wordpress的后台设置里,是可以设置归档...

建站相关 wordpress

wordpress 2025-03-14

WORDPRESS HEADER模块常用函数

在 WordPress 开发中,header.php 文件是主题的重要组成部分,用于定义网站的头部内容。以下是一些在 header.php 中常用的 WordPress 函数及其用途,如果嫌部分函数生成的默认模板不需要的元素过多,也可...

建站相关 wordpress

wordpress 2025-03-12

wordpress的前后台数据交换ajax

ajax是个耳熟能详的词儿,但因为有点儿复杂,博主一直是规避学习的,今天刚好碰到一个前台jquery向wp后台申请数据的问题。躲不过,那就慢慢调试吧。钩子wp的ajax还区分了用户,对于不同的用户(登录与否)采用不同的钩子,不过这里只...

建站相关 wordpress

wordpress 2025-03-07

WordPress中add_meta_box函数参数详解

add_meta_box 是 WordPress 中用于在后台编辑页面添加自定义元框(Meta Box)的函数。它允许开发者在文章、页面、自定义文章类型等编辑页面中添加自定义字段或内容。以下是 add_meta_box 函数的参数及其...

建站相关 wordpress

wordpress 2025-03-07

wordpress 手动添加自定义字段

自定义字段可以扩展文章的信息,也有很多相关的成熟的插件,比如Advanced Custom Fields (ACF) 插件,如果希望添加的字段不多,也不愿意为此安装过多的插件,我们也可以考虑手动来添加它。为post文章添加字段// 添...

建站相关 wordpress