WP Cron在插入帖子方面失败了一半

时间:2011-09-07 作者:Itai Sagi

我为我的公司构建了一个插件,基本上可以访问tube网站,从中获取内容,并在定义的任何状态(发布、草稿、未来等)自动发布。

现在,当我通过插件手动添加帖子时,一切都很顺利:它打开一个卷曲到站点,抓取视频并嵌入,获取缩略图,发布标题,完美无瑕。但是,当我尝试使用

add_action(\'timelyTube\', \'timelyPost\');
在激活挂钩上:

wp_schedule_event(time(), \'hourly\', \'timelyTube\');
它的工作原理是激发函数timelyPost(), 但当它去抓取视频时,它无法这样做,它会抓取缩略图&;标题,但不是嵌入,这意味着cURL正在工作,但在这个过程中有些东西被搞砸了。

如果有人知道该做什么,我会很感激,谢谢,Itai。

2 个回复
最合适的回答,由SO网友:Itai Sagi 整理而成

嗯,我已经找到了自己的解决方案,谢谢韦斯顿,但我相信我的解决方案更简单:)

从调用insert post的函数中,为了简单起见,可以执行以下操作:

kses_remove_filters();
wp_insert_post( $post );
kses_init_filters();
瞧!有一个新帖子。

SO网友:Weston Ruter

我刚刚遇到了同样的问题。我想做的是wp_insert_post() 在cron操作中,脚本显然会在save_post 操作处理程序。我找到了我的问题,结果是save_post 用于保存自定义元数据库中的POST数据的处理程序。在此处理程序中,它调用check_admin_referer( \'myplugin_save\', \'myplugin_nonce\') 作为安全检查。这个函数非常烦人地调用wp_die() 如果安全检查失败,那么执行就会停止。因此,如果DOING_CRON 然后一切按预期开始工作。请参见:

<?php
function myplugin_metabox_save(){
    // If doing wp_insert_post() during a cron, the check_admin_referer() below
    // will always fail and we know the metabox wasn\'t shown anyway, so abort.
    if ( defined(\'DOING_CRON\') || isset($_GET[\'doing_wp_cron\']) ){
        return;
    }

    // This is to get around the problem of what happens when clicking the "Add Post"
    // link on the admin menu when browsing the main site.
    if( $_SERVER[\'REQUEST_METHOD\'] != \'POST\' ){
        return false;
    }

    // Verify this came from the our screen and with proper authorization
    if ( !check_admin_referer( \'myplugin_save\', \'myplugin_nonce\') ) {
        return false;
    }

    // ...
    // Now handle $_POST fields and save them as postmeta for example
}
add_action( \'save_post\', \'myplugin_metabox_save\' );

结束

相关推荐

WordPress Cron如何找出我的事件重复发生?

在我的插件中,我可以设置如下cron事件:wp_schedule_event(time(), \'daily\', \'myhookname\'); 但我想做的是能够找出我设定的复发myhookname.原因是我提供了一个允许更改重复周期的设置。我需要做的是检查定期设置是否已更改其当前设置,如果已更改,请删除事件并使用新的定期重新安排事件。如果有这样的函数:$recurrence = wp_current_event_recurrence(\'myhookname\'); // returns