O gancho de upload do arquivo padrão do WP não funciona se usado em um plugin

Versão WP: 4.7.2

Estou criando um plugin e uso wp_handle_upload_prefilter & wp_handle_sideload_prefilter para filtrar o tamanho do arquivo e retornar erros.

Quando adicionado às functions.php do functions.php , ambos estão funcionando. Mas, quando adicionado à funcionalidade do plugin, o wp_handle_sideload_prefilter não funcionará mais.

Alguém tem alguma idéia de como fazer esse gancho funcionar dentro de um plugin?

Aqui está a minha function:

 function validate_user_storage_space( $file ) { $storage_limits = array( "administrator" => 1, //size in MB "editor" => 0, "author" => 0, "contributor" => 0, "subscriber" => 0, "client" => 0, "vendor-basic" => 1, "pending_user" => 0, "suspended" => 0, ); //$storage_limits = get_option( $this->plugin_name ); $user_id = get_current_user_id(); $user_data = get_userdata( $user_id ); $user_roles = $user_data->roles; $user_limits = array(); // If user has multiple roles foreach ( $user_roles as $role ) { array_push( $user_limits, $storage_limits[ $role ] ); } // Sorts the limits in ascending order sort( $user_limits ); // 9999 limit means unlimited storage if ( end( $user_limits ) === 9999 ) { return $file; } else { // returns the highest limit $size_limit = end( $user_limits ); } // Convert MB to Bytes $size_limit_bytes = $size_limit * pow( 1024, 2 ); $used_storage_space = get_user_meta( $user_id, 'rbsl_used_storage_space', $single = true ); $file_size = $file[ 'size' ]; if ( ( $file_size + $used_storage_space ) > $size_limit_bytes ) { $storage_limit_reached = true; } else { $storage_limit_reached = false; } if ( $file[ 'size' ] > 1 ) { $file['error'] = apply_filters( 'rbsl_sl_error_message', __( 'You\'ve reached the limit of', $this->plugin_name ) . ' ' . $size_limit . 'MB', $size_limit ); } return $file; } add_filter('wp_handle_upload_prefilter', 'validate_user_storage_space', 1); add_filter('wp_handle_sideload_prefilter', 'validate_user_storage_space', 1); 

Solutions Collecting From Web of "O gancho de upload do arquivo padrão do WP não funciona se usado em um plugin"

talvez validate_user_storage_space esteja demitido cedo demais ou seja tarde demais. tente enrolar esta function dentro de outra function, em seguida, acerte a segunda function com um dos ganhos de ação abaixo

init ou after_setup_theme ou plugins_loaded

como abaixo.

 add_action( 'init', 'validate_user_init' ); //after_setup_theme plugins_loaded function validate_user_init(){ add_filter('wp_handle_upload_prefilter', 'validate_user_storage_space', 1); add_filter('wp_handle_sideload_prefilter', 'validate_user_storage_space', 1); } function validate_user_storage_space( $file ) { //your stuff }