Come posso aggiungere tabelle personalizzate/endpoint all'API REST di WordPress?

26 mar 2016, 20:49:25
Visualizzazioni: 14.9K
Voti: 9

Ho creato tabelle personalizzate per motivi di prestazioni per prodotti, carrelli e notifiche. Vorrei rendere queste tabelle e i loro dati disponibili per normali operazioni CRUD tramite l'API REST di WordPress v2. Come posso aggiungere tabelle personalizzate (e le loro colonne) all'API in modo da poter ottenere/aggiornare quei record?

2
Commenti

Hai trovato una soluzione dato che ho la stessa domanda?

Simon H Simon H
12 apr 2017 21:45:52

Non ancora. Per ora ho optato per i custom post type. Non è la soluzione migliore, ma non sono ancora riuscito a capire come fare.

codescribblr codescribblr
18 apr 2017 15:29:09
Tutte le risposte alla domanda 3
1
12

Alla fine ho trovato una soluzione per la mia tabella restaurants, che si trova insieme alle tabelle wp_* nel mio database di WordPress. Spero che possa essere utile

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;
}

Ho diverse varianti di questo codice per tutte le azioni CRUD di cui ho bisogno

18 apr 2017 15:31:18
Commenti

So che è un vecchio post, ma c'è qualche possibilità che tu possa pubblicare il resto del tuo codice CRUD per favore? Mi piace il tuo approccio e sarei interessato a vedere come affronti il resto. Sto costruendo un'applicazione WP che può gestire la maggior parte dei suoi dati con CPT, ma c'è un enorme dataset che deve finire in una tabella 'normale' per questioni di performance, e deve essere accessibile tramite l'API di WP. Grazie mille.

User User
10 giu 2019 03:34:42
0

Invece di creare tabelle personalizzate nel database, sarebbe meglio creare i tuoi tipi di post personalizzati (all'interno di WordPress - dalla versione 4.7 in poi), insieme a qualsiasi campo personalizzato di cui hai bisogno (così come le tassonomie).

Tutto questo può essere fatto tramite un plugin o attraverso il file functions.php di un tema.

Ecco un esempio molto semplice ma completo di come fare ciò.

Mostra come creare un tipo di post personalizzato (chiamato 'acme_products') e i suoi campi personalizzati con la possibilità di utilizzare tassonomie personalizzate (categorie). Tutto con il supporto per l'API REST integrato. Ti mostrerà anche come personalizzare le caselle di input (meta) per i moduli di WP-Admin e le colonne delle pagine di elenco.

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

19 gen 2017 01:28:38
0

Per me ha funzionato con l'API REST v1. La v2 ha rifiutato il permesso di callback per la selezione dei risultati della tabella. Ecco un esempio di endpoint per recuperare dati da una tabella personalizzata del database: dominio.com/wp-json/test/v1/testing

add_action( 'rest_api_init', function () {
        $namespace = 'test/v1';
        $route     = '/testing';

        register_rest_route($namespace, $route, array(
            'methods'   => WP_REST_Server::READABLE,
            'callback'  => function () {
                global $wpdb;
                $table = $wpdb->prefix . 'test';
                $query = "SELECT name, color, etc.. FROM $table";
                $results = $wpdb->get_results($query);
                return $results;
            },
            'permission_callback' => '__return_true',
            'args' => array()
        ));
    });
4 gen 2022 15:22:35