web-dev-qa-db-fra.com

Comment puis-je ajouter des tables/terminaisons personnalisées à la WP REST API?

J'ai créé des tableaux personnalisés pour des raisons de performances des produits, des paniers et des notifications. Je souhaite rendre ces tables et leurs données disponibles pour CRUD normal via la WP REST API v2. Comment pourrais-je ajouter des tables personnalisées (et leurs colonnes) à l'API afin que je puisse obtenir/mettre à jour ces enregistrements?

2
codescribblr

J'ai finalement élaboré une solution pour ma table restaurants, qui se trouve à côté des tables wp_* dans ma base de données WP. J'espère que cela t'aides

add_action( 'rest_api_init', function () {
  register_rest_route( 'restos/v1', '/all', array(
    'methods' => 'GET',
    'callback' => 'handle_get_all',
    'permission_callback' => function () {
      return current_user_can( 'edit_others_posts' );
    }
  ) );
} );

function handle_get_all( $data ) {
    global $wpdb;
    $query = "SELECT qname, rname, recommendation FROM `restaurants`";
    $list = $wpdb->get_results($query);
    return $list;
}

J'ai des variations sur ce thème pour toutes les actions CRUD dont j'ai besoin

2
Simon H

Plutôt que de créer des tables de base de données personnalisées, vous feriez mieux de créer vos propres types de publication personnalisés (dans Wordpress - Depuis 4.7. +), Ainsi que les champs personnalisés dont vous avez besoin (ainsi que les taxonomies).

Tout cela peut être fait comme un plugin ou via functions.php dans un thème.

Voici un exemple très simple mais complet de la façon de procéder.

Il montre comment créer un type de publication personnalisé (appelé 'acme_products') et ses champs personnalisés avec la possibilité de taxonomies personnalisées (catégories). Le tout avec le support d'API REST intégré. Il vous montrera également comment personnaliser les zones de saisie (méta) des formulaires WP-Admin et des colonnes des pages de liste.

https://Gist.github.com/kosso/47004c9fa71920b441f3cd0c35894409

0
Kosso