This is an old revision of the document!
<?php namespace theme\wp_rest; use WP_REST_Request; /**============================================= * REST API ENDPOINT * ============================================= * * Eigener Rest-Endpoint damit eine komplett * eigene JSON Ausgabe erzeugt werden kann * * Dokumentation: * @link https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/ */ add_action( 'rest_api_init', [ 'theme\wp_rest\RestAPIContactForm', 'register_route' ] ); final class RestAPIContactForm { /* GET /wp-json/theme/v1/contact-form */ public static $rest_namespace = 'theme/v1'; public static $rest_route = 'contact-form/'; public static $send_methods = [ 'POST', 'GET']; public static $rest_callback = [ 'theme\wp_rest\RestAPIContactForm', 'rest_response' ]; private static $flush_rewrite_rules = true; // Zum Debuggen /**--------------------------------------------- * Register Rest Route * --------------------------------------------- * * Fügt die neue Route * * @return void */ public static function register_route() { $route_args = [ 'methods' => self::$send_methods, 'callback' => self::$rest_callback, 'permission_callback' => '__return_true', ]; register_rest_route( self::$rest_namespace, self::$rest_route, $route_args ); if( self::$flush_rewrite_rules ){ self::flush_rewrite_rules(); } } /**--------------------------------------------- * Render Response * --------------------------------------------- * * Handled den Request und gibt eine Ausgabe * zurück. Ausgabe sollte ein Array sein. * Das Array wird automatisch von WP in ein * JSON umgewandelt. * * @return void */ public static function rest_response( WP_REST_Request $request ):array { return [ 'message' => 'funktioniert', 'request' => $request, ]; } /**--------------------------------------------- * Flush aller Rewrite Rules * --------------------------------------------- * * Sollte nur in Dev gemacht werden zum Testen. * In Produktion nicht mehr ausführen. * * @return void */ private static function flush_rewrite_rules() { $hard_flush = true; flush_rewrite_rules( $hard_flush ); } }