Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programmieren:wordpress:rest_api_einrichten [2021/07/26 15:26] jgehrkeprogrammieren:wordpress:rest_api_einrichten [2024/07/12 20:10] (current) jgehrke
Line 1: Line 1:
 ====== Wordpress Rest-API Endpunkt einrichten ====== ====== Wordpress Rest-API Endpunkt einrichten ======
 +
 +**AKTUALISIERTE VERSION MIT STATIC CLASS »» ** [[programmieren:wordpress:rest_api_mit_statischer_klasse|]]
 +
  
 Mit diesem Script kann ein neuer Rest-API Endpunkt eingerichtet werden, der dann über die Website URL aufrufbar ist. In diesem Beispiel wird ein //News Endpunkt// erstellt, alles nur fiktiv, aber es zeigt wie man es macht. Mit diesem Script kann ein neuer Rest-API Endpunkt eingerichtet werden, der dann über die Website URL aufrufbar ist. In diesem Beispiel wird ein //News Endpunkt// erstellt, alles nur fiktiv, aber es zeigt wie man es macht.
Line 52: Line 55:
  ];  ];
  
- return$return_array; /* <- wird automatisch in JSON umgewandelt */+ return $return_array; /* <- wird automatisch in JSON umgewandelt */
 } }
  
 </code> </code>
 +
 +===== Alternative Schreibweise als Klasse/Objekt =====
 +
 +Es ist sinnvoll die Registrierung der REST-API Route in Wordpress in eine eigene Klasse zu packen. Man verhindert Namenskonflikte, schafft mehr Übersichtlichkeit und hat insgesamt bessere Code-Qualität.
 +
 +<code php>
 +/**
 + *
 + */
 +class CreateTrackingPoint
 +{
 +
 + function __construct()
 + {
 + add_action( 'rest_api_init', [ $this, 'register_endpoint'] );
 + }
 +
 + public function register_endpoint()
 + {
 + // /wp-json/moewe-tracking/v1/tracking_create/<USER_ID:integer>/<EVENT_TYPE:string>
 + $namespace = 'moewe-tracking/v1'; // ohne Slash am Anfang und Ende
 + $route     = 'tracking_create/(?P<user_id>\d+)/(?P<event_type>[a-zA-Z0-9-_]+)/';
 + $args      = [
 + 'methods'             => 'GET',
 + 'callback'            => [ $this, 'render_endpoint' ],
 + 'permission_callback' => '__return_true',
 + ];
 +
 + register_rest_route( $namespace, $route, $args );
 + }
 +
 + public function render_endpoint( $request ) {
 +
 + $user_id    = $request['user_id'];
 +    $event_type = $request['event_type'];
 +
 + $return_array = [
 + 'user_id'    => $user_id,
 + 'event_type' => $event_type,
 + ];
 +
 +
 +
 + return $return_array; /* <- wird automatisch in JSON umgewandelt */
 + }
 +}
 +</code>
 +

Page Tools