自定义间隔不起作用

时间:2014-04-12 作者:Bhavin Toliya

我正在尝试使用给定的用户输入为cron计划创建自定义间隔,但它不起作用。

代码如下:

add_filter( \'cron_schedules\', \'custom_cron_schedule\' );
function custom_cron_schedule( $schedules,$int ) {
    $schedules[\'custom\'] = array(
        \'interval\' => $int, // user input integer in second
        \'display\'  => __( \'Custom Interval\' ),
    );

    return $schedules;
}
我试图通过_get_cron_array() 发现间隔不见了我也查过了$int, 它有36000.

那么,我在这里遗漏了什么,或者我不允许在这个过滤器中使用参数吗?

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

关于输入参数的注意事项:

您正在对两个输入参数使用过滤回调函数(FCB),但默认值为一个。

通常,您应更换:

add_filter( \'some_filter\', \'some_filter_callback\' );
function some_filter_callback( $arg1, $arg2 ) {
比如:

add_filter( \'some_filter\', \'some_filter_callback\', 10, 2 );
function some_filter_callback( $arg1, $arg2 ) {
如果需要两个参数。

您还必须查看apply_filters( \'some_filter\', ... ) 部分以查找正确数量的输入参数。

问题:

当您检查wp_get_schedules() 您可以找到以下内容:

return array_merge( apply_filters( \'cron_schedules\', array() ), $schedules );
所以没有第二个$int 参数传递给FCB。

然后,从FCB返回的数组将与默认值合并$schedules, 其中:

$schedules = array(
        \'hourly\'     => array( \'interval\' => HOUR_IN_SECONDS,      \'display\' => __( \'Once Hourly\' ) ),
        \'twicedaily\' => array( \'interval\' => 12 * HOUR_IN_SECONDS, \'display\' => __( \'Twice Daily\' ) ),
        \'daily\'      => array( \'interval\' => DAY_IN_SECONDS,       \'display\' => __( \'Once Daily\' ) ),
    );
希望这有帮助。

结束

相关推荐

Custom Post Types in plugins?

我一直在想这个。在我现在看到的大多数插件中,它们看起来像CPT,但没有“已发布”链接。他们也不担任职务。它们只是停留在仪表板中的插件,页面和列列表顶部有“添加新”链接,当您单击“编辑”时,可以像在任何其他CPT中一样编辑项目。所以我想知道他们是否是CPT?如果是的话,有没有关于这方面的教程?我正在考虑为我的网站创建一个插件,我想要的是构建一个插件,我可以“添加新项目”,并保存项目(并且可以编辑)。我可以通过短代码调用项目。我知道如何在函数中创建CPT。php和我一直在阅读关于基本插件创建的内容。我似乎找不