使用TRANSPORT_POST_STATUS帮助诊断计划开机自检问题

时间:2015-02-15 作者:LPH

几个月来,我一直在尝试让预定的帖子启动一个函数,最后我把事情简化为以下代码来查看发生了什么。问题是,计划的post不会显示wp\\U模具。

add_action( \'transition_post_status\', function ( $new_status, $old_status, $post )  {

    if( \'publish\' == $new_status && \'publish\' != $old_status ) {

        wp_die(\'STOP\');
    }
}, 10, 3 );
如果我只是立即点击帖子,那么停止显示,但预定的帖子没有显示任何内容,将发布。我也尝试过简单的wp\\u die(post);查看在预定的帖子上返回的内容,并且没有触发wp\\U die。

即使将其强制为“future”=$old\\u status也不起作用。

我怎样才能诊断出为什么这不会触发预定的帖子?

我也尝试过var\\u dump。

1 个回复
最合适的回答,由SO网友:Rachel Baker 整理而成

默认情况下add_action() 仅传递一个参数,而不是全部三个参数。将功能更改为:

    add_action( \'transition_post_status\', function ( $new_status, $old_status, $post )  {

    if( \'publish\' == $new_status && \'publish\' != $old_status ) {

        wp_die(\'STOP\');
    }
}, 10, 3 );

Edited to add:

这个transition_post_status 钩子在从future到publish的post转换发生后激发,并且调用wp\\u die()不会为计划的post显示“STOP”。相反,您只需阻止wp_transition_post_status() 正在处理。

未来的帖子通过wp\\u cron发布后台计划的事件,因此调用如下函数var_dump()print_r() 对调试没有帮助。相反,请尝试使用add_option(), wp_mail(), 或XDebug书签:jetbrains。com/phpstorm/help/configuring-xdebug。html

结束