Cum pot adăuga tabele/endpoint-uri personalizate la WP REST API?
Am creat tabele personalizate din motive de performanță pentru produse, coșuri și notificări. Doresc să fac aceste tabele și datele lor disponibile pentru operații CRUD normale prin intermediul WP REST API v2. Cum pot adăuga tabelele personalizate (și coloanele lor) în API pentru a putea obține/actualiza acele înregistrări?

Am reușit în cele din urmă să găsesc o soluție pentru tabelul meu restaurants
, care se află alături de tabelele wp_*
în baza mea de date WordPress. Sper să vă fie de ajutor
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;
}
Am variante ale acestui model pentru toate acțiunile CRUD de care am nevoie

Știu că este un post vechi, dar există vreo șansă să poți posta și restul codului tău CRUD, te rog? Îmi place abordarea ta și aș fi interesat să văd cum abordezi restul. Dezvolt o aplicație WP care poate gestiona majoritatea datelor sale cu CPT-uri, dar există un set mare de date care trebuie introdus într-un tabel 'normal' din motive de performanță și să fie accesibil prin API-ul WP. Mulțumesc mult.

În loc să creezi tabele personalizate în baza de date, ar fi mai bine să creezi propriile tipuri de postări personalizate (în cadrul WordPress - începând cu versiunea 4.7.+), împreună cu orice câmpuri personalizate ai nevoie (precum și taxonomii).
Toate acestea pot fi realizate ca un plugin sau prin intermediul fișierului functions.php
dintr-o temă.
Iată un exemplu foarte simplu, dar complet, despre cum să faci acest lucru.
Acesta arată cum să creezi un tip de postare personalizat (numit 'acme_products') și câmpurile sale personalizate, cu posibilitatea de a adăuga taxonomii personalizate (categorii). Toate acestea vin cu suport pentru REST API integrat. De asemenea, vei învăța cum să personalizezi căsuțele de introducere (meta) pentru formularele din WP-Admin și coloanele paginilor de listare.
https://gist.github.com/kosso/47004c9fa71920b441f3cd0c35894409

A funcționat pentru mine cu API-ul REST v1. Versiunea v2 a refuzat permisiunea de callback pentru selectarea rezultatelor din tabel. Iată un exemplu de endpoint pentru preluarea datelor dintr-un tabel personalizat din baza de date: domain.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()
));
});
