actions as $action => $details ) { add_action( 'admin_post_' . $this->namespace . '/' . $action, array( $this, 'handle_admin_post_request' ) ); } } public function handle_admin_post_request() { $action = isset( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) : ''; $action = explode( $this->namespace . '/', $action )[1]; if ( ! isset( $this->actions[ $action ] ) ) { wp_die( esc_html__( 'Invalid POST action.', 'academy' ) ); } $details = $this->actions[ $action ]; $nonce = isset( $_REQUEST['security'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['security'] ) ) : ''; if ( empty( $nonce ) && isset( $_REQUEST['_wpnonce'] ) ) { $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); } if ( ! wp_verify_nonce( $nonce, $this->nonce_action ) ) { wp_die( esc_html__( 'Invalid nonce.', 'academy' ) ); } if ( ! is_user_logged_in() || ! current_user_can( isset( $details['capability'] ) ? $details['capability'] : 'manage_options' ) ) { wp_die( esc_html__( 'Insufficient permissions.', 'academy' ) ); } if ( is_callable( $details['callback'] ) ) { call_user_func( $details['callback'], wp_unslash( $_POST ) ); } else { wp_die( esc_html__( 'Invalid callback method.', 'academy' ) ); } } }