{"id":513,"date":"2026-09-29T15:10:00","date_gmt":"2026-09-29T13:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?page_id=513"},"modified":"2026-09-25T10:49:19","modified_gmt":"2026-09-25T08:49:19","slug":"hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/","title":{"rendered":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln"},"content":{"rendered":"<h2>Architektur-\u00dcberblick: REST-API vs. admin-ajax.php<\/h2>\n<p>Interaktive Frontend-Komponenten in WordPress basieren traditionell auf dem veralteten Handler <code>admin-ajax.php<\/code>. Jeder Aufruf \u00fcber <code>admin-ajax.php<\/code> initialisiert jedoch den gesamten Administrations-Kern (inklusive Dashboard-Widgets, Rechteberechnungen und Backend-Hooks). Dieser architektonische Overhead f\u00fchrt regelm\u00e4\u00dfig zu Latenzen der Time to First Byte (TTFB) von \u00fcber 400\u2013600 Millisekunden, selbst bei trivialen Datenbankabfragen.<\/p>\n<p>In WordPress v7.0.2 sind eigene REST-API-Endpunkte \u00fcber die Schnittstelle <code>register_rest_route()<\/code> eine hochperformante Alternative. REST-Endpunkte umgehen das Administrationssystem, erzwingen native JSON-Schema-Validierungen, unterst\u00fctzen HTTP-Caching-Header und werden deutlich schneller verarbeitet. In Kombination mit direkten Datenbankabfragen \u00fcber die <code>$wpdb<\/code>-Abstraktionsschicht \u2013 anstelle der Initialisierung ressourcenintensiver <code>WP_Query<\/code>-Schleifen \u2013 lassen sich Daten-Payloads in unter 50 Millisekunden ausliefern.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-ent-de.png\" width=\"1120\" height=\"536\" alt=\"Diagramm zum Artikel: Registrierung am REST-API-Initialisierungs-Hook, Endpunkt-Definition und Validierungsregeln, Programmierung eines performanten PHP-Callbacks mit\u2026 \u2026\"><figcaption>Der Ablauf aus dem Artikel in 5 Schritten: Registrierung am REST-API-Initialisierungs-Hook, Endpunkt-Definition und Validierungsregeln, Programmierung eines performanten PHP-Callbacks mit\u2026, Asynchrones Frontend-Fetching implementieren \u2026.<\/figcaption><\/figure>\n<h2>Schritt-f\u00fcr-Schritt-Implementierungsanleitung<\/h2>\n<h3>Schritt 1: Registrierung am REST-API-Initialisierungs-Hook<\/h3>\n<p>Eigene REST-Endpunkte m\u00fcssen zwingend w\u00e4hrend des Aktions-Hooks <code>rest_api_init<\/code> registriert werden. Eine Registrierung zu einem fr\u00fcheren oder sp\u00e4teren Zeitpunkt des WordPress-Bootstraps f\u00fchrt zu Routing-Fehlern oder HTTP-404-Antworten.<\/p>\n<p>Jeder Endpunkt erfordert einen eindeutigen Namensraum (Standardstruktur: <code>vendor\/v1<\/code>) und einen spezifischen Routen-Pfad.<\/p>\n<h3>Schritt 2: Endpunkt-Definition und Validierungsregeln<\/h3>\n<p>Die Registrierung erfordert die Angabe von HTTP-Methoden (wie <code>GET<\/code> oder <code>POST<\/code>), einer Sicherheitspr\u00fcfung (<code>permission_callback<\/code>) sowie Regeln f\u00fcr die Parameter-Validierung (<code>validate_callback<\/code> und <code>sanitize_callback<\/code>).<\/p>\n<p>Eine strikte Validierung auf API-Ebene verhindert SQL-Injections \u00fcber die Parameter, noch bevor die Verarbeitung der Payload beginnt; vor Cross-Site-Scripting (XSS) in der Ausgabe sch\u00fctzt sie nicht.<\/p>\n<h3>Schritt 3: Programmierung eines performanten PHP-Callbacks mit direktem SQL<\/h3>\n<p>Zur Maximierung der Ausf\u00fchrungsgeschwindigkeit bei einfachen Datenausleseprozessen (z. B. Abruf einer Liste aktueller Logs oder Custom-Events) sollte direktes SQL mittels <code>$wpdb-&gt;prepare()<\/code> anstelle von <code>WP_Query<\/code> genutzt werden. Dies eliminiert den Metadaten-Overhead und die Instanziierung kompletter Post-Objekte.<\/p>\n<p>Die folgende produktionsreife Architektur registriert einen High-Speed-Endpunkt unter <code>\/wp-json\/lw-toolbox\/v1\/latest-logs<\/code>:<\/p>\n<pre><code>\/**\n * Hochperformante REST-API-Endpunkt-Architektur\n * Zielsystem: WordPress v7.0.2\n *\/\nadd_action( 'rest_api_init', 'lw_register_fast_rest_endpoint' );\n\nfunction lw_register_fast_rest_endpoint() {\n    register_rest_route(\n        'lw-toolbox\/v1',\n        '\/latest-logs',\n        array(\n            'methods'             =&gt; WP_REST_Server::READABLE, \/\/ GET-Methode\n            'callback'            =&gt; 'lw_get_fast_logs_callback',\n            'permission_callback' =&gt; 'lw_verify_rest_permission',\n            'args'                =&gt; array(\n                'limit' =&gt; array(\n                    'default'           =&gt; 10,\n                    'validate_callback' =&gt; function( $param ) {\n                        return is_numeric( $param ) &amp;&amp; $param &gt; 0 &amp;&amp; $param &lt;= 100;\n                    },\n                    'sanitize_callback' =&gt; 'absint',\n                ),\n            ),\n        )\n    );\n}\n\n\/**\n * Zugriffskontrolle: \u00d6ffentlicher Lesezugriff oder Berechtigungspr\u00fcfung\n *\/\nfunction lw_verify_rest_permission( WP_REST_Request $request ) {\n    \/\/ True f\u00fcr \u00f6ffentliche Endpunkte, alternativ Berechtigungspr\u00fcfung:\n    \/\/ return current_user_can( 'edit_posts' );\n    return true;\n}\n\n\/**\n * Leichtgewichtiges Callback mit direkter SQL-Ausf\u00fchrung\n *\/\nfunction lw_get_fast_logs_callback( WP_REST_Request $request ) {\n    global $wpdb;\n\n    $limit = $request-&gt;get_param( 'limit' );\n    $table_name = $wpdb-&gt;prefix . 'posts';\n\n    \/\/ Direkte SQL-Abfrage ohne WP_Query-Overhead\n    $query = $wpdb-&gt;prepare(\n        \"SELECT ID, post_title, post_date_gmt \n         FROM {$table_name} \n         WHERE post_status = 'publish' AND post_type = 'post' \n         ORDER BY post_date_gmt DESC \n         LIMIT %d\",\n        $limit\n    );\n\n    $results = $wpdb-&gt;get_results( $query, ARRAY_A );\n\n    if ( empty( $results ) ) {\n        return new WP_REST_Response( array(), 200 );\n    }\n\n    \/\/ HTTP-Caching-Header im Browser setzen (60 Sekunden)\n    $response = new WP_REST_Response( $results, 200 );\n    $response-&gt;header( 'Cache-Control', 'public, max-age=60' );\n\n    return $response;\n}<\/code><\/pre>\n<h3>Schritt 4: Asynchrones Frontend-Fetching implementieren<\/h3>\n<p>Im Frontend k\u00f6nnen Abfragen an den neuen Endpunkt \u00fcber modernes Vanilla-JavaScript mittels der <code>fetch()<\/code>-API realisiert werden \u2013 vollst\u00e4ndig ohne jQuery und (bei \u00f6ffentlichen Endpunkten) ohne Admin-Nonces:<\/p>\n<pre><code>\/**\n * Asynchroner Frontend-Daten-Loader\n *\/\ndocument.addEventListener( 'DOMContentLoaded', () =&gt; {\n    const targetContainer = document.getElementById( 'lw-fast-data-box' );\n    if ( ! targetContainer ) return;\n\n    fetch( 'https:\/\/lukaswojcik.com\/wp-json\/lw-toolbox\/v1\/latest-logs?limit=5', {\n        method: 'GET',\n        headers: {\n            'Content-Type': 'application\/json'\n        }\n    } )\n    .then( response =&gt; {\n        if ( ! response.ok ) {\n            throw new Error( 'Netzwerkantwort fehlerhaft: ' + response.statusText );\n        }\n        return response.json();\n    } )\n    .then( data =&gt; {\n        targetContainer.innerHTML = '&lt;ul&gt;' + \n            data.map( item =&gt; `&lt;li&gt;&lt;strong&gt;${item.post_title}&lt;\/strong&gt; (${item.post_date_gmt})&lt;\/li&gt;` ).join( '' ) + \n            '&lt;\/ul&gt;';\n    } )\n    .catch( error =&gt; {\n        console.error( 'REST-API-Ladefehler:', error );\n    } );\n} );<\/code><\/pre>\n<h3>Schritt 5: Qualit\u00e4tssicherung und Latenz-Profiling<\/h3>\n<p>Zur Verifikation der Performance-Gewinne muss eine Validierung im Browser mittels Entwicklertools erfolgen:<\/p>\n<ol>\n<li><strong>Analyse der Netzwerk-Wasserfallgrafik:<\/strong> Aufruf von <code>\/wp-json\/lw-toolbox\/v1\/latest-logs<\/code> durchf\u00fchren und best\u00e4tigen, dass die TTFB konstant unter 60 ms bleibt.<\/li>\n<li><strong>HTTP-Cache-Verifikation:<\/strong> In den Antwort-Headern verifizieren, dass <code>Cache-Control: public, max-age=60<\/code> gesendet wird, um Proxy- und Browser-Caching zu aktivieren.<\/li>\n<li><strong>Parameter-Pr\u00fcfung:<\/strong> Ung\u00fcltige Argumente \u00fcbergeben (z. B. <code>?limit=999<\/code> oder Buchstaben), um zu pr\u00fcfen, ob der Server sofort mit HTTP <code>400 Bad Request<\/code> abbricht, ohne die Datenbank zu belasten.<\/li>\n<\/ol>\n<h2>Zusammenfassung und resultierender Mehrwert<\/h2>\n<p><strong>Was sich damit erreichen l\u00e4sst:<\/strong> Der vollst\u00e4ndige Austausch ressourcenintensiver <code>admin-ajax.php<\/code>-Skripte und schwerf\u00e4lliger <code>WP_Query<\/code>-Schleifen durch einen leichtgewichtigen, schemavalidierten REST-JSON-Endpunkt basierend auf direkten SQL-Abfragen.<\/p>\n<p><strong>Resultierender Mehrwert:<\/strong><\/p>\n<ul>\n<li><strong>Drastische Latenzreduktion:<\/strong> Die Time to First Byte (TTFB) verringert sich um 60\u201380 %; JSON-Antworten werden in einigen Dutzend Millisekunden statt in halben Sekunden bereitgestellt.<\/li>\n<li><strong>Minimale Serverlast:<\/strong> Die Umgehung des Administrationskerns reduziert den Arbeitsspeicherverbrauch sowie die Datenbank-Last bei stark frequentierten Frontend-Zugriffen erheblich.<\/li>\n<li><strong>Integrierte Sicherheitsarchitektur:<\/strong> Eingebaute Rechtepr\u00fcfungen (<code>permission_callback<\/code>) und Typsicherheitsfilter garantieren maximalen Schutz vor unbefugtem Datenzugriff und SQL-Injections.<\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Warum scheitert current_user_can() im Endpunkt, obwohl die Person im Browser angemeldet ist?<\/h3>\n<p>Weil WordPress bei REST-Anfragen das Anmelde-Cookie allein nicht gelten l\u00e4sst. Kommt eine Anfrage mit Cookie, aber ohne Nonce, setzt WordPress den aktuellen Benutzer f\u00fcr diese Anfrage auf 0, also auf nicht angemeldet. Das sch\u00fctzt vor Cross-Site Request Forgery: Eine fremde Seite k\u00f6nnte den Browser sonst dazu bringen, mit dem Cookie der angemeldeten Person Anfragen an den Endpunkt zu senden.<\/p>\n<p>Sobald statt <code>return true<\/code> die Pr\u00fcfung mit <code>current_user_can( 'edit_posts' )<\/code> greift, braucht der Aufruf im Frontend deshalb eine Nonce f\u00fcr die Aktion wp_rest. Sie entsteht auf dem Server mit <code>wp_create_nonce( 'wp_rest' )<\/code>, wird der Seite mitgegeben und im Header X-WP-Nonce mitgeschickt. Ohne sie antwortet der Endpunkt mit 401, mit einer abgelaufenen oder falschen Nonce mit 403.<\/p>\n<h3>Passt Cache-Control: public auch zu einem Endpunkt mit Rechtepr\u00fcfung?<\/h3>\n<p>Nein. <code>public<\/code> erlaubt ausdr\u00fccklich auch gemeinsam genutzten Caches, etwa einem Proxy oder einem CDN, die Antwort zu speichern und 60 Sekunden lang an alle auszuliefern, die dieselbe Adresse abrufen. F\u00fcr eine \u00f6ffentliche Liste ver\u00f6ffentlichter Beitr\u00e4ge ist das gewollt. H\u00e4ngt die Antwort dagegen davon ab, wer fragt, ist <code>private<\/code> oder <code>no-store<\/code> zu setzen, sonst kann eine Antwort f\u00fcr eine angemeldete Person bei anderen landen.<\/p>\n<h3>Sch\u00fctzt die Validierung der Parameter auch vor XSS in der Ausgabe?<\/h3>\n<p>Nein, sie pr\u00fcft nur, was in den Endpunkt hineingeht, hier den Parameter limit. Die Beitragstitel kommen aus der Datenbank und laufen ungepr\u00fcft durch: Das Frontend-Beispiel setzt <code>post_title<\/code> per <code>innerHTML<\/code> in die Seite, und ein Titel mit HTML-Markup wird dort als Markup gedeutet; ein Attribut wie onerror f\u00fchrt dann Skript aus. In einer Einzelinstallation d\u00fcrfen Rollen mit der Berechtigung unfiltered_html, etwa Administratoren und Redakteure, Markup in Titel schreiben. Ein einziges \u00fcbernommenes Redaktionskonto gen\u00fcgt dann, um Code in jede Seite zu bringen, die diese Liste zeigt.<\/p>\n<p>Sicherer ist es, die Listeneintr\u00e4ge mit <code>document.createElement<\/code> aufzubauen und den Titel \u00fcber <code>textContent<\/code> einzusetzen. Dann erscheint jedes Zeichen als Text, auch spitze Klammern.<\/p>\n<h3>Umgeht ein REST-Endpunkt auch Plugins und Theme?<\/h3>\n<p>Nein. Eine Anfrage an \/wp-json\/ durchl\u00e4uft den normalen Start von WordPress: Alle aktiven Plugins und die functions.php des Themes werden geladen, und alles, was an init h\u00e4ngt, l\u00e4uft mit. Es entf\u00e4llt nur der Verwaltungsteil, den admin-ajax.php zus\u00e4tzlich l\u00e4dt. Ein Plugin, das bei jeder Anfrage teure Arbeit erledigt, bremst den Endpunkt deshalb genauso wie jede andere Seite.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress REST API handbook<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Technische Anleitung zum Ersatz veralteter admin-ajax.php-Handler durch schnelle, eigene REST-API-Endpunkte mit direkten SQL-Abfragen in WordPress v7.0.2.<\/p>\n","protected":false},"author":1,"featured_media":14065,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92644],"tags":[92256,92274,92048,92235,92292,92277],"class_list":["post-513","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-wordpress-plugins-tricks-de","tag-mysql-de","tag-php-de","tag-rest-api-de","tag-tutorial-de","tag-web-performance-de","tag-wordpress-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Technische Anleitung zum Ersatz veralteter admin-ajax.php-Handler durch schnelle, eigene REST-API-Endpunkte mit direkten SQL-Abfragen in WordPress v7.0.2.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-29T13:10:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln\",\"datePublished\":\"2026-09-29T13:10:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/\"},\"wordCount\":863,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-513-hochperformante-eigene-rest-api-endp-g.png\",\"keywords\":[\"MySQL\",\"PHP\",\"REST API\",\"Tutorial\",\"Web Performance\",\"WordPress\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/\",\"name\":\"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-513-hochperformante-eigene-rest-api-endp-g.png\",\"datePublished\":\"2026-09-29T13:10:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-513-hochperformante-eigene-rest-api-endp-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-513-hochperformante-eigene-rest-api-endp-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/tutorials-de-wordpress-plugins-tricks-de\\\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/","og_locale":"en_US","og_type":"article","og_title":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik","og_description":"Technische Anleitung zum Ersatz veralteter admin-ajax.php-Handler durch schnelle, eigene REST-API-Endpunkte mit direkten SQL-Abfragen in WordPress v7.0.2.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-29T13:10:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln","datePublished":"2026-09-29T13:10:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/"},"wordCount":863,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png","keywords":["MySQL","PHP","REST API","Tutorial","Web Performance","WordPress"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/","name":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png","datePublished":"2026-09-29T13:10:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-513-hochperformante-eigene-rest-api-endp-g.png","width":1200,"height":630,"caption":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/tutorials-de-wordpress-plugins-tricks-de\/hochperformante-eigene-rest-api-endpunkte-in-wordpress-entwickeln\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hochperformante, eigene REST-API-Endpunkte in WordPress entwickeln"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=513"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/513\/revisions"}],"predecessor-version":[{"id":20845,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/513\/revisions\/20845"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14065"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}