WordPress插件定时发帖Missed Scheduled Post Publisher 汉化版,可以解决WordPress定时发布文章失败的问题。它可以帮助你查看定时发布的WordPress文章是否错过了时间表,并将错过的计划项目状态从计划状态更改为已发布。
使用方法:
1. 安装并启用Missed Scheduled Post Publisher插件。
2. 如果你不想安装插件,也可以直接将以下代码添加到functions.php的最后面:
<?php
if(!function_exists('add_action')){
header('Status 403 Forbidden');header('HTTP/1.0 403 Forbidden');header('HTTP/1.1 403 Forbidden');exit();}
?>
<?php
function wpms_log(){
echo"\n<!--Plugin WP Missed Schedule 2011.0920.2011 Active-->";
}
add_action('wp_head','wpms_log');
add_action('wp_footer','wpms_log')
?>
<?php
define('WPMS_DELAY',5);
define('WPMS_OPTION','wp_missed_schedule');
function wpms_replace(){
delete_option(WPMS_OPTION);
}
register_deactivation_hook(__FILE__,'wpms_replace');
function wpms_init(){
remove_action('publish_future_post','check_and_publish_future_post');
$last=get_option(WPMS_OPTION,false);
if(($last!==false)&&($last>(time()-(WPMS_DELAY*60))))return;
update_option(WPMS_OPTION,time());
global$wpdb;
$scheduledIDs=$wpdb->get_col("SELECT`ID`FROM`{$wpdb->posts}`"."WHERE("."((`post_date`>0)&&(`post_date`<=CURRENT_TIMESTAMP()))OR"."((`post_date_gmt`>0)&&(`post_date_gmt`<=UTC_TIMESTAMP()))".")AND`post_status`='future'LIMIT 0,5");
if(!count($scheduledIDs))return;
foreach($scheduledIDs as$scheduledID){if(!$scheduledID)continue;
wp_publish_post($scheduledID);}
}
add_action('init','wpms_init',0)
?>
这段代码是一个 WordPress 插件的代码。它的主要功能是处理 WordPress 中未按计划发布的文章。
该代码以 PHP 编写,并使用了 WordPress 提供的一些函数和钩子(hooks)来实现功能。下面是代码的解释:
1. 开头的 `if(!function_exists(‘add_action’)){…}` 是用来检查是否有必要的 WordPress 函数存在。如果这些函数不存在,那么返回一个 403 禁止访问的 HTTP 响应头,然后退出。
2. `wpms_log()` 是一个自定义函数,用于将插件信息输出到网页的 HTML 注释中。
3. `add_action(‘wp_head’,’wpms_log’);` 和 `add_action(‘wp_footer’,’wpms_log’);` 是将 `wpms_log()` 函数添加到 WordPress 的 `wp_head` 和 `wp_footer` 钩子中。这样,当用户访问网站时,插件信息将显示在网页的头部和尾部。
4. `define(‘WPMS_DELAY’,5);` 和 `define(‘WPMS_OPTION’,’wp_missed_schedule’);` 是定义了两个常量,分别是 `WPMS_DELAY` 和 `WPMS_OPTION`。`WPMS_DELAY` 表示延迟时间,单位为分钟;`WPMS_OPTION` 是用于存储插件相关数据的 WordPress 选项的名称。
5. `wpms_replace()` 是一个自定义函数,用于在插件被停用时删除相关的 WordPress 选项。
6. `register_deactivation_hook(__FILE__,’wpms_replace’);` 是将 `wpms_replace()` 函数注册为插件停用时的回调函数。
7. `wpms_init()` 是用于处理未按计划发布的文章的函数。
8. `remove_action(‘publish_future_post’,’check_and_publish_future_post’);` 是移除了 WordPress 默认的检查和发布未来文章的动作。
9. `get_option(WPMS_OPTION,false)` 是获取存储在 `WPMS_OPTION` 选项中的最后一次处理的时间。
10. 如果最后一次处理的时间小于当前时间减去延迟时间,则执行以下代码。
11. 全局变量 `$wpdb` 是 WordPress 提供的与数据库交互的类对象,用于执行 SQL 查询。
12. `$wpdb->get_col()` 是执行 SQL 查询,获取数据库中符合条件的文章 ID。这个查询会选择未来发布(post_status=’future’)的文章,且发布时间要大于 0 并且小于当前时间或者大于 0 并且小于 UTC 时间。
13. 如果获取的文章 ID 数量为 0,则无需处理,直接返回。
14. 对于每个获取到的文章 ID,调用 `wp_publish_post($scheduledID)` 来发布该文章。
15. `add_action(‘init’,’wpms_init’,0)` 是将 `wpms_init()` 函数添加到 WordPress 的 `init` 钩子中,优先级为 0。这样,当 WordPress 初始化时,即可执行处理未按计划发布的文章的代码。
综上所述,这段代码是一个 WordPress 插件,它增加了 WordPress 头部和尾部的 HTML 注释,用于显示插件信息,并通过 `init` 钩子处理未按计划发布的文章。
这样,你就可以轻松解决WordPress定时发布文章失败的问题了。