WordPress is een van ’s werelds populairste content management systemen (CMS’en) en helpt kleine en grote bedrijven bij het opzetten en maken van verschillende vormen van websitecontent. Maar WordPress is verder geëvolueerd dan alleen het ondersteunen van traditionele blogcontent – en dat is grotendeels te danken aan de WordPress REST API.

De WordPress REST API verbindt WordPress met andere externe webapplicaties. Het maakt toegankelijkere communicatie mogelijk en helpt je om meeslepende, aantrekkelijke webervaringen te bouwen die naadloos integreren met het CMS platform.

Deze API gebruikt endpoints om WordPress inhoud als JSON objecten op te halen en te manipuleren. Met deze endpoints kun je WordPress content op afstand creëren, lezen, bijwerken en verwijderen (CRUD) zonder in te loggen op het WordPress Admin account, wat flexibiliteit biedt en de functionaliteit van WordPress uitbreidt tot buiten de kernfuncties.

Deze handleiding onderzoekt wat de WordPress REST API is, de voordelen ervan, hoe het de basismogelijkheden van WordPress uitbreidt en hoe je een custom endpoint kunt maken, registreren en openen.

Vereisten

Om deze handleiding te kunnen volgen, heb je nodig:

De WordPress REST API begrijpen

De WordPress REST API is een krachtige interface waarmee je programmatisch kunt communiceren met WordPress sites met behulp van standaard HTTP methoden.

De standaard mogelijkheden omvatten het benaderen en manipuleren van verschillende soorten WordPress gegevens, zoals berichten, pagina’s, opmerkingen, gebruikers en taxonomieën, in een gestructureerd JSON format. Je kunt ook op afstand CRUD acties uitvoeren op content.

De echte waarde van de WordPress REST API ligt echter in de uitbreidbaarheid via custom endpoints. Je kunt custom endpoints maken om de API aan te passen aan specifieke behoeften, zoals het integreren van extra functionaliteiten, services van derden of unieke gegevensstructuren. Deze flexibiliteit stelt je in staat om zeer custom en functierijke applicaties te bouwen bovenop WordPress.

Zo plan je je custom API endpoints

Het plannen van de structuur en het doel van je custom endpoints is de sleutel tot efficiënte API ontwikkeling. Custom endpoints die zijn afgestemd op jouw specifieke behoeften vereisen zorgvuldige overweging om optimale functionaliteit te garanderen. Strategische planning vergemakkelijkt schaalbaarheid en aanpasbaarheid, en maakt endpoints klaar voor de toekomst om tegemoet te komen aan veranderende bedrijfsbehoeften.

Het plannen van je custom API endpoints vóór de implementatiefase zorgt voor:

  • Duidelijkheid van endpointfuncties – Het plannen van je endpoint verduidelijkt de specifieke functie van het endpoint, de verwachte datatypes en het gebruik.
  • Consistentie en ontwikkelingsefficiëntie – Planning zorgt ook voor consistentie in het gebruik van de endpoints, responstypen en opmaak, wat de interactie met de API verbetert. Bovendien maakt het kennen van het doel van de API een juiste implementatie mogelijk, waardoor de ontwikkelingstijd wordt verkort en de kans op fouten afneemt.
  • Schaalbaarheid en aanpasbaarheid – Het definiëren van de behoeften van je endpoint helpt om het toekomstbestendig te maken, zodat het tegemoet kan komen aan veranderende bedrijfsbehoeften en -eisen zonder dat een compleet herontwerp nodig is.
  • Beveiliging – Een goede planning van endpoints helpt bij het bepalen van de noodzaak voor authenticatie om toegang te krijgen tot gegevens of deze te manipuleren. Voor het verkrijgen van content via de API is soms geen gebruikersauthenticatie nodig. Maar voor content die gevoelige of ongeautoriseerde gegevens bevat, is het essentieel om beveiligingseisen te definiëren en maatregelen zoals autorisatie en toegangscontroles te implementeren om de beveiliging van gegevens te helpen garanderen.

In de praktijkgerichte secties die volgen, wordt uitgelegd hoe je een custom endpoint kunt maken dat beschikbaar is op site-domain/wp-json/custom/v2/testimonials om getuigenissen van klanten op te halen uit een database van je WordPress site.

Na het verzenden van een verzoek retourneert het endpoint een JSON object met informatie over de getuigenissen op je WordPress site zoals gedefinieerd in je callback functie.

Laten we erin duiken!

Een custom berichttype maken voor je endpoint

Eerst moet je een custom berichttype maken.

  1. Navigeer naar de Theme File Editor in het Appearance gedeelte van je WordPress Admin dashboard.
  2. Open het bestand function.php van je thema en voeg de volgende code toe:
    function create_custom_testimonial_type() {
        register_post_type('testimonials', array(
            'labels' => array(
                'name' => 'Testimonials',
                'singular_name' => 'Testimonial',
            ),
            'public' => true,
            'has_archive' => true,
            'show_in_rest' => true, // This enables REST API support
        ));
    }
    add_action('init', 'create_custom_testimonial_type');

    Deze code maakt een custom “testimonials” berichttype en schakelt de WordPress REST API ondersteuning in ('show_in_rest' => true). De add_action hook roept de create_testimonial_type callback functie aan en start deze tijdens de uitvoering.

    Je kunt de labels en argumenten aanpassen door ze te verwijderen of toe te voegen.

  3. Klik op Update file om je wijzigingen op te slaan.
    Screenshot van de code in het functions.php bestand, waarmee een aangepast 'testimonial' berichttype wordt gemaakt
    Een custom_testimonial berichttype maken.

    Vernieuw het dashboard om te zien dat de optie Testimonials is toegevoegd aan je WordPress dashboard.

    Screenshot showing the newly created testimonial post type
    Het nieuw aangemaakte testimonial berichttype.

  4. Maak een nieuwe post met testimonials door te klikken op Testimonials > Add new post. Je kunt het blok Pullquote gebruiken. Afhankelijk van hoe je je testimonial presenteert, kun je ook andere blokken gebruiken.

Hier zijn twee voorbeeldtestimonials die zijn gemaakt met de blokken Pullquote:

Screenshot van de twee testimonials die zijn gemaakt met het pullquote-blok
Nieuw aangemaakte testimonials.

Een custom endpoint registreren in WordPress

Het registreren van een custom endpoint maakt het beschikbaar voor consumptie via de REST API. Dit houdt in dat je de register_rest_route functie gebruikt, deze aanroept op de rest_api_init hook, en een callback methode op te geven die wordt aangeroepen wanneer de route wordt aangeroepen.

Plak de volgende code in het bestand function.php van je thema:

add_action( 'rest_api_init', 'register_testimonial_rest_route' );
 
function register_testimonial_rest_route(){
	register_rest_route(
		'custom/v2',
		'/testimonials',
		array(
			'methods' => 'GET',
			'callback' => 'get_testimonials',
		)
	);
}

Deze register_rest_route() neemt drie parameters op:

  • Route Namespace ($route_namespace) – Dit is het eerste deel van het URL segment en moet het patroon vendor/versienummer volgen. De vendor staat voor de slug van de leverancier of het thema. De naamruimte helpt om endpoints te onderscheiden en helpt klanten om contact op te nemen met ondersteuning voor jouw custom endpoint. Deze tutorial gebruikt de custom/v2 naamruimte.
  • De basis URL ($route) – Deze volgt de namespaceen is een URL die gekoppeld is aan een methode. Je kunt meer dan één endpoint registreren voor je route. Voor deze tutorial gebruik je de /testimonials route, die het endpoint vertelt om testimonials op te halen.
  • De opties van het endpoint ($args) – Hier is dit een array die de HTTP methode bevat die wordt gebruikt bij het aanroepen van de route en de callback-functie die het endpoint zal aanroepen wanneer je een verzoek verstuurt. We zullen deze callback-functie in de volgende sectie bespreken.

Noteer tenslotte het adres van je endpoint. Het formaat van een endpoint is site-address/wp-json/namespace/route. In dit voorbeeld is het endpoint dus https://www.staging.kidspartysanctuary.co.uk/wp-json/custom/v2/testimonials.

De callback-funtie voor het endpoint implementeren

Na het maken van het custom berichttype en het registreren van je custom endpoint, is de volgende stap het schrijven van je callback-functie. Deze callback-functie wordt elke keer aangeroepen als het endpoint wordt benaderd.

  1. Declareer je get_testimonials callback-functie met de onderstaande code:
    function get_testimonials(){
    
    }
  2. Initialiseer een lege testimonials array om de opgehaalde WordPress testimonial gegevens in op te slaan:
    $testimonials = array();
  3. Stel een array in met de naam $args met queryparameters voor een WP_Query call.
    $args = array(
        'post_type' => 'testimonials', //specifies you want to query the custom post type   
    'testimonial',
        'nopaging' => true,  // no pagination, but retrieve all testimonials at once
    ),
  4. Maak een instantie van de klasse WP_Query die de array $args opneemt, een query uitvoert op basis van de opgegeven parameters en de resultaten van de WordPress query opslaat in de variabele $query.
    $query = new WP_Query($args)
  5. Schrijf een voorwaardelijke declaration om te controleren of er getuigenisberichten zijn. Maak dan een while loop om de berichten te doorlopen en de testimonials terug te sturen naar title en content.
    if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {
                $query->the_post();
                $testimonial_data = array( /*an array that stores the title 
    and content of every post*/
                'title' => get_the_title(),
                    'content' => get_the_content(),
                    // Add other fields as needed
                );
                $testimonials[] = $testimonial_data; 
            }
            wp_reset_postdata(); /* restores $post 
    global to the current post to avoid any conflicts in subsequent queries*/
        }
        return rest_ensure_response( $testimonials ); /*ensures response is 
    correctly set as a response object for consistency*/

    Hier is de volledige code:

    function get_testimonials() {
    $testimonials = array();
    $args = array(
        'post_type' => 'testimonials',
        'nopaging' => true,
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            $testimonial_data = array(
                'title' => get_the_title(),
                'content' => get_the_content(),
                // Add other fields as needed
            );
            $testimonials[] = $testimonial_data;
        }
        wp_reset_postdata();
    }
    return rest_ensure_response( $testimonials );
    }
  6. Test je endpoint met Postman om te controleren of je toegang hebt tot je gegevens.
    Screenshot van een succesvolle Postman API call naar het testimonial custom endpoint
    Postman toont een succesvol antwoord.

    Je kunt dit ook testen met een browser. Ga naar het endpoint door de URL site-domain/wp-json/custom/v2/testimonials in te voeren in de adresbalk van je browser.

    Het browserresultaat dat verschijnt wanneer het endpoint wordt benaderd.
    Het browserresultaat dat verschijnt wanneer het endpoint wordt benaderd.

Samenvatting

Deze tutorial heeft uitgelegd hoe je een WordPress API custom endpoint kunt implementeren. Om gebruikers toegang te geven tot en te laten communiceren met je WordPress database gegevens, hoef je alleen maar de route te registreren die een callback-functie implementeert.

Wil je weten hoe je WordPress kunt maximaliseren voor jouw bedrijf? Kinsta biedt tal van geavanceerde opties als onderdeel van onze managed WordPress Hosting service om aan je unieke zakelijke behoeften te voldoen. Een opvallende optie is de Kinsta MU (must-use) plugin, die caching voor je site beheert en implementeert om latency te verminderen en prestaties te verbeteren. Probeer Kinsta vandaag nog!

Wat is jouw mening over het ontwikkelen van custom WordPress API endpoints? Heb je er ooit een ontworpen? We horen graag over je ervaringen. Deel ze in de commensectie hieronder.

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).