Php Cron作业/激活Wordpress插件不';t fire Insert post函数

Php Cron作业/激活Wordpress插件不';t fire Insert post函数,php,cron,wordpress,Php,Cron,Wordpress,我一直在试图弄清楚为什么我的插件停止工作,但还没有弄清楚原因。。基本上,插件应该通过wordpress的scheduled events钩子创建一个Cron作业,然后通过json提要进行每周解析以更新帖子。当我最初设置它时,它工作得非常好,而现在,当我激活插件时,它似乎都不工作了,至少它应该这样做。cron作业的激活和取消激活似乎工作正常 此代码段创建每周cron活动功能 add_filter( 'cron_schedules', 'cron_add_weekly' ); function cr

我一直在试图弄清楚为什么我的插件停止工作,但还没有弄清楚原因。。基本上,插件应该通过wordpress的scheduled events钩子创建一个Cron作业,然后通过json提要进行每周解析以更新帖子。当我最初设置它时,它工作得非常好,而现在,当我激活插件时,它似乎都不工作了,至少它应该这样做。cron作业的激活和取消激活似乎工作正常

此代码段创建每周cron活动功能

add_filter( 'cron_schedules', 'cron_add_weekly' );
function cron_add_weekly( $schedules ) {
    // Adds once weekly to the existing schedules.
    $schedules['weekly'] = array(
        'interval' => 604800,
        'display' => __( 'Once Weekly' )
    );
    return $schedules;
}
下面的代码在激活时创建cron作业,该作业正在工作

register_activation_hook( __FILE__, 'startupx_activation' );
function startupx_activation() {
   wp_schedule_event( time(), 'weekly', 'startupx_weekly_event_hook' );
}

add_action( 'wp', 'startupx_setup_schedule' );
function startupx_setup_schedule() {
    if ( ! wp_next_scheduled( 'startupx_weekly_event_hook' ) ) {
        wp_schedule_event( time(), 'weekly', 'startupx_weekly_event_hook' );
    }
}
然后,我创建了一个函数,用于解析/更新所有帖子并插入任何新帖子。如果某一集的提要发生了更改,我会进行更新。我认为只更新它比检查是否需要更新更容易。下面是一些代码

add_action( 'startupx_weekly_event_hook', 'insert_episodes' );
function insert_episodes() {
    //load the data from the RSS
    $feed = "http://www.seanzulu.com/startupx?format=json";
    $json = json_decode(curl_get_contents($feed)); //curl_get_contents calls another function to get the feed data via cURL
    $episode_list = $json->items; //set where the episode data lives in the object for easier use

    //parse through each episode for data
    foreach($episode_list as $episode) {
        //set the post array to have the necessary data per http://codex.wordpress.org/Function_Reference/wp_insert_post

        if(get_page_by_title($episode->title,OBJECT,'post') != NULL) {
            //update post
            wp_update_post($post);
        } else {
            //insert post
            $dateCreated = date('Y-m-d H:i:s', $epoch/1000);
            $post['post_date'] = $dateCreated; //only set the date on creation
            wp_insert_post($post);
        }
    }
}
我已经删除了一些代码,因为我认为没有必要解决我遇到的问题。如果需要,我可以加进去。它基本上只是解析数据并对其进行设置,以便
$post
具有与每个索引匹配的正确值。在这个函数之后,我有一个函数去激活每周偶数计划挂钩

register_deactivation_hook( __FILE__, 'startupx_deactivation' );
function startupx_deactivation() {
    wp_clear_scheduled_hook( 'startupx_weekly_event_hook' );
}
就像我说的,我不完全确定它为什么会坏,以及是什么导致它在激活插件时无法运行
insert\u scents()
函数。我猜这与钩子是如何设置的有关,但是它在我没有修改代码之前就已经工作了,它坏了。我查看了不同函数的文档,看看是否有什么变化,但没有发现任何有用的东西。我不知道下一步该做什么,所以我非常感谢任何关于如何让它运行的见解。如果你看到的领域,可以更好地优化的一切手段让我知道!如果你有问题,让我知道,我会非常乐意回答。提前感谢您的帮助!如果你想让我上传更多的代码,请让我知道

更新1:
我想这可能是因为我在
$epoch
中有一个未声明的变量。我不确定这是否解决了问题,或者只是解决了我遇到的另一个问题

您可以做的第一件事是安装“WP Crontrol”()。它将允许按需运行cron作业,以便您可以正确地进行测试。第二件您可能想做的事情是安装“BlackBox Debug Bar”(),这样您就可以看到您的操作是如何执行的(比如SQL查询等)

您还可以做一些基本的日志记录,这可能会帮助您发现问题。我发现的最简单的方法是将“记录的事件”转储到瞬态中,以便在cron运行之后获取它们。你可以把你想要的任何东西都转储到日志中

用于插入函数的内部…

/*
 * Log Episode List
 */
ob_start();
var_dump( $episode_list );
$log_data = ob_get_clean();

set_transient( 'my_plugin_log', $log_data, 24 * HOUR_IN_SECONDS );
/*
 * Produce the log reports
 */
public function my_log_report()
{
?>
        <h1>Log Viewer</h1>
        <pre class="logs"><?php echo get_transient( 'my_plugin_log' ); ?></pre>
<?php
    }
add_submenu_page( 'edit.php', 'Log Viewer', 'View Logs', 'manage_options', 'my-post-logs', 'my_log_report' );
然后您可以添加这样的日志查看器…

/*
 * Log Episode List
 */
ob_start();
var_dump( $episode_list );
$log_data = ob_get_clean();

set_transient( 'my_plugin_log', $log_data, 24 * HOUR_IN_SECONDS );
/*
 * Produce the log reports
 */
public function my_log_report()
{
?>
        <h1>Log Viewer</h1>
        <pre class="logs"><?php echo get_transient( 'my_plugin_log' ); ?></pre>
<?php
    }
add_submenu_page( 'edit.php', 'Log Viewer', 'View Logs', 'manage_options', 'my-post-logs', 'my_log_report' );
/*
*生成日志报告
*/
公共功能我的日志报告()
{
?>
日志查看器