* @param WP_REST_Request $request The request for which the permission is checked. * @return bool|WP_Error True if the current user has the capability, otherwise a WP_Error object. */ private function check_permissions( WP_REST_Request $request ) { $nonce = $request->get_param( 'nonce' ); if ( ! wp_verify_nonce( $nonce, self::NONCE_KEY ) ) { return new WP_Error( 'invalid_nonce', __( 'Invalid nonce.', 'woocommerce' ), array( 'status' => 403 ), ); } return $this->check_permission( $request, 'manage_woocommerce' ); } /** * Handle the POST /settings/email/listing/recreate-email-post. * * @param WP_REST_Request $request The received request. * @return array|WP_Error Request response or an error. */ public function recreate_email_post( WP_REST_Request $request ) { $email_id = $request->get_param( 'email_id' ); $generated_post_id = ''; try { $generated_post_id = $this->email_template_generator->generate_email_template_if_not_exists( $email_id ); } catch ( \Exception $e ) { return new WP_Error( 'woocommerce_rest_email_post_generation_failed', // translators: %s: Error message. sprintf( __( 'Error generating email post. Error: %s.', 'woocommerce' ), $e->getMessage() ), array( 'status' => 500 ) ); } if ( $generated_post_id ) { return array( // translators: %s: WooCommerce transactional email ID. 'message' => sprintf( __( 'Email post generated for %s.', 'woocommerce' ), $email_id ), 'post_id' => (string) $generated_post_id, ); } return new WP_Error( 'woocommerce_rest_email_post_generation_error', __( 'Error unable to generate email post.', 'woocommerce' ), array( 'status' => 500 ) ); } }