WordPress REST API erstellt einen benutzerdefinierten Endpunkt, der eine benutzerdefinierte Tabelle verwendet

Lesezeit: 2 Minuten

Benutzer-Avatar
HelpMeDoe

Ist es möglich, einen benutzerdefinierten Endpunkt zu erstellen, der mit derselben Datenbank verbunden ist, jedoch mit einer benutzerdefinierten Tabelle? wenn ja, wie?

zum Beispiel :

wp_TempTable (benutzerdefinierte Tabelle)

Ich möchte mit einem benutzerdefinierten Endpunkt darauf zugreifen … Ich habe mehrere Foren und Websites durchsucht, aber kein Glück …

  • Was meinst du mit “eine benutzerdefinierte Tabelle”? Die API legt Daten aus mehreren Tabellen offen. Was denken Sie darüber, stattdessen eine “benutzerdefinierte” Tabelle zu haben?

    – Grischa Levit

    19. Januar 2017 um 3:51 Uhr

  • Ich brauchte die benutzerdefinierte Tabelle, um einige Kontoinformationen zu speichern, die von einem Drittanbieter-Client stammten, was der Client wollte … aber nachdem ich herausgefunden hatte, dass die API nur die Standardtabellen (wp_posts und wp_users) verwendet … also suchte ich nach eine andere Möglichkeit, die API mit einer separaten Tabelle zu verbinden, aber ohne Erfolg …

    – HelpMeDoe

    19. Januar 2017 um 5:11 Uhr

Benutzer-Avatar
Simon h

Ja, es ist möglich. Dies verwendet nicht das von WordPress empfohlene Controller-Muster, sondern erledigt die Aufgabe, bei der die Aufgabe darin besteht, eingehendes JSON in eine Zeile in Ihrer benutzerdefinierten Tabelle (hier als restaurants).

function handle_post( WP_REST_Request $request ) {
    global $wpdb;
    $item = $request->get_json_params();

    $fields = array();
    $values = array();
    foreach($item as $key => $val) {
        array_push($fields, preg_replace("/[^A-Za-z0-9]/", '', $key));
        array_push($values, $wpdb->prepare('%s', $val));
    }
    $fields = implode(", ", $fields);
    $values = implode(", ", $values);
    $query = "INSERT INTO `restaurants` ($fields) VALUES ($values)";
    $list = $wpdb->get_results($query);

    return $list;
}


add_action( 'rest_api_init', function () {
  register_rest_route( 'restos/v1', '/post', array(
    'methods' => 'POST',
    'callback' => 'handle_post',
    'permission_callback' => function () {
      return current_user_can( 'edit_others_posts' );
    }
  ) );
} );

  • Ich bekomme 403 (Forbidden) irgendeine Idee? Vielen Dank

    – Merlin

    18. Juni 2017 um 9:03 Uhr

  • Sie schaffen ein gigantisches Sicherheitsloch und Platz für viele Fehler, indem Sie wpdb->prepare nicht verwenden; Versuchen Sie einfach zu sehen, was passiert, wenn ein Wert ein einfaches Anführungszeichen enthält

    – Ivan Castellanos

    21. September 2017 um 7:53 Uhr

  • (Nur in dieser Antwort behoben)

    – Ivan Castellanos

    21. September 2017 um 8:04 Uhr

1370270cookie-checkWordPress REST API erstellt einen benutzerdefinierten Endpunkt, der eine benutzerdefinierte Tabelle verwendet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy