从未使用过此功能,也没有测试过此功能,但它是否可以工作?do_action_ref_array().
function myplugin_clean_logs_fn() {
$args = array(
\'param1\' => \'val1\',
\'param2\' => \'val2\',
\'affected_rows\' => 0,
);
do_action_ref_array( \'myplugin_clean_logs\', &$args );
return $args[\'affected_rows\'];
}
// CALL IT
$affected_rows = my_plugin_clean_logs();
echo $affected_rows .\' entr\'. ($args[\'affected_rows\']*1===1?\'y\':\'ies\') .\' deleted.\';
// SCHEDULE IT
add_action(\'myplugin_clean_logs_call_fn\', \'myplugin_clean_logs_fn\');
wp_schedule_event( current_time( \'timestamp\' ), \'daily\', \'myplugin_clean_logs_call_fn\' );
// A SAMPLE FILTER
add_action(\'myplugin_clean_logs\', function($args) {
// Cleaning process
// For each log affected, increment $args[\'affected_rows\'] accordingly
}, 10, 3);
如果这样不行,为什么不像卡斯帕建议的那样过滤掉呢?我的意思是,这就是过滤器的目的,在这种情况下,受影响的行数就是要过滤的内容。(我怀念旧的MortCore。有人记得它是如何处理返回值、按引用传递和仅使用一个三参数函数的参数的吗?)