TL; DR - Wie verknüpfe ich Informationen aus verschiedenen Tabellen, um eine API für ein Plugin zu erstellen.Erstellen einer WordPress-API, die mehrere Tabellen aufruft
Um zu geben, was ich tue. Wir bauen eine App und eine Website für ein Fitness-Studio, die App, für den Moment, zieht nur Blogposts, Kalenderaktivitäten, ermöglicht es ihnen, die Aktivitäten zu ihrem Telefon hinzuzufügen, und eine Beschreibung der Einrichtung, während die Website mehr geht ausführlich über das Fitnessstudio, die Trainer und alle möglichen Ereignisse. Es wurde entschieden, dass wir Wordpress für das Admin-Panel für die Website und die App verwenden sollten, so dass sie nur die Arbeit an einem Ort erledigen müssen.
Für die App verwende ich WP REST API v2, um die Blog-Posts einzuziehen, was der einfache Teil ist. Aber der Kalender ist extrem schwierig geworden. Das Thema, das wir gekauft haben, ist Symetrio Gym and Fitness, das mit einem Kalender geliefert wird, den wir verwenden können, und es entspricht fast dem, was wir in der App verwendet haben. Also müssen wir die Daten, die in den Kalender eingegeben wurden, einholen und einen API-Aufruf in der App verwenden, um die Daten anzuzeigen.
So hier ist, wo die Dinge kompliziert werden, verwendet der Kalender mehrere Tabellen, um alle seine Daten zu ziehen. Für den Trainer, die Klassen und den Raum wird ein benutzerdefinierter Beitragstyp erstellt, der nur den Namen des Trainers, der Klasse oder des Raums enthält. Für die Daten und Zeiten und die Daten, auf die sie verweist, werden jedoch zwei separate Tabellen verwendet, eine mit dem Namen "schedule_ap_multi", die das Datum, die Referenz-ID und die ID der Klasse enthält, auf die in Posts verwiesen wird.
Die nächste Tabelle heißt schedule_ap_multi_fields und hat die Startzeit, die Endzeit, die ID, die darauf verweist, welche Zeile in schedule_ap_multi verwendet wird, die ID des Raumposts, die ID des Trainers und eine Beschreibung des Aktivität, aber diese sind alle in einer eigenen Zeile, die einzige Sache, die wirklich sie zusammen in der ID für schedule_ap_multi binden.
Hier sind einige Bilder, wie die beiden Tabellen eingerichtet sind.
Ich begann eine API für den Kalender zu bauen, aber ich kann keine Daten aus den Tabellen erhalten, es scheint, dass ich nur Daten von Posts bekommen, und da die Termine und Start- und Endzeit sind keine Beiträge, es ist schwierig, sie zu bekommen. für das JSON-Objekt Ich schaffe es ist wie folgt strukturiert:
protected function make_data($post, $data) {
global $wpdb;
$classesID = $wpdb->get_results('SELECT ID FROM wp_wtr_schedule_ap_multi',ARRAY_A);
$classes = $wpdb->get_results('SELECT * FROM wp_posts WHERE post_type = "classes"',OBJECT);
$date = $wpdb->get_results('SELECT * FROM wp_wtr_schedule_ap_multi');
$data[ $post->ID ] = array(
'title' => 'the title',
'type' => $post->post_type,
'room' => 'the room',
'instructor' => 'the instructor',
'description' => 'the description',
'start_date' => 'start date',
'end_date' => 'end date',
'image' => 'image',
'style' => 'style',
};
return $date;
wenn ich post- $ tun> es nur die post_type der Beiträge wird, und es ist eine Herausforderung gewesen, eine andere post_type bekommen, der kein Beitrag ist, wenn ich eine der wpdb Befehle verwenden, erhalte ich die Abfrage zurück, aber ganz, und nur, wenn ich es als eine der JSON-Objekte verwenden, wird es nicht ein Array zurück, wenn ich es
$data[ here ]=array()
Was ich zu tun versuche, zusammenzufassen, ist, all diese Objekte zu verbinden, hoffentlich einen api - Aufruf zu machen und den Kalender auf der App - Seite auszufüllen, um den Daten, die ich für jede in WordPress erstellte Aktivität benötige. Ich habe jetzt einen kompletten Verlust von dem, was ich tun muss, und niemand sonst in meinem Team hat Erfahrung mit Wordpress-Plugins oder erstellt eine benutzerdefinierte API für WordPress.