false, 'code' => 'nonce_failure', 'message' => __( 'Verify nonce failed', 'yaymail' ), ] ); } /** * Verify nonce * * @return int|false */ public function verify_nonce( $request ) { $nonce = $request->get_header( 'x_wp_nonce' ); return wp_verify_nonce( $nonce, 'wp_rest' ); } /** * Function API exec * * @param callable $callable * @param \WP_REST_Request $request * @return \WP_REST_Response|\WP_Error */ public function exec( $callable, \WP_REST_Request $request ) { if ( ! $this->verify_nonce( $request ) ) { return rest_ensure_request( $this->nonce_failure_response() ); } try { if ( is_callable( $callable ) ) { $response = $callable( $request ); } } catch ( \Throwable $ex ) { return rest_ensure_response( [ 'isError' => true, 'code' => $ex->getCode(), 'message' => $ex->getMessage(), ] ); } return rest_ensure_response( $response ); } }