WordPress en PHP superglobals

$_POST – Beheren van formulierdata

Wanneer een gebruiker een formulier indient via een WordPress-site, is $_POST onmisbaar. Deze superglobal bevat data verzonden via POST-methoden, zoals gebruikersinput van een contactformulier. Het is essentieel om data te valideren en te zuiveren met WordPress functies voor veiligheid.

  • WordPress Functie: sanitize_text_field() voor het zuiveren van tekstinput.
  • Voorbeeld: Bij het verwerken van een formulier in een plugin, zou je de sanitize_text_field() functie kunnen gebruiken:
if ( isset( $_POST['username'] ) ) {
    $username = sanitize_text_field( $_POST['username'] );
}
PHP

$_GET – Data uit URL’s ophalen

$_GET wordt gebruikt om data uit query strings in URL’s te lezen. In WordPress is dit bijvoorbeeld nuttig voor het verwerken van paginanavigatie of het filteren van zoekresultaten.

  • WordPress Functie: get_query_var() voor het ophalen van query variabelen.
  • Voorbeeld: Om een parameter uit de URL te lezen, gebruik je get_query_var():
$page_num = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
PHP

$_REQUEST – Een Algemene data container

Hoewel $_REQUEST een combinatie is van $_GET, $_POST en $_COOKIE, wordt het minder vaak gebruikt in WordPress vanwege veiligheidsredenen en duidelijkheid. Directe toegang tot $_GET of $_POST heeft de voorkeur.

$_COOKIE – Werken met cookies

Cookies zijn essentieel voor het beheren van gebruikerssessies en voorkeuren. In WordPress worden cookies gebruikt voor authenticatieprocessen en voor het onthouden van gebruikersinstellingen.

  • WordPress Functie: is_user_logged_in() om te controleren of een gebruiker is ingelogd (gebruikt cookies).
  • Voorbeeld: Je kunt controleren of een gebruiker is ingelogd:
if ( is_user_logged_in() ) {
    // Voer acties uit voor ingelogde gebruikers
}
PHP

$_SESSION – Sessiebeheer

Hoewel WordPress niet standaard PHP-sessies gebruikt, kunnen ze worden ingezet voor specifieke functionaliteiten in maatwerkplugins of -thema’s. Echter, vaak worden alternatieven zoals transients of gebruikersmeta-data gebruikt.

  • Opmerking: Gebruik voor sessieachtige functionaliteiten in WordPress alternatieven zoals transients (set_transient(), get_transient()).

Werken met Transients

  • Functies: set_transient() en get_transient().
  • Gebruik: Transients zijn ideaal voor het opslaan van tijdelijke informatie die niet permanent hoeft te worden bewaard, zoals cachegegevens of tijdelijke gebruikersinstellingen.

Voorbeeld: Gebruiker Specifieke Instellingen Opslaan

Stel, we willen een gebruikersvoorkeur opslaan, zoals de keuze van een thema of een andere tijdelijke instelling. We kunnen dit doen zonder PHP-sessies door transients te gebruiken.

function save_user_theme_choice( $user_id, $theme ) {
    // Sleutel voor de transient
    $transient_key = 'user_theme_choice_' . $user_id;

    // Opslaan van de keuze voor 24 uur (86400 seconden)
    set_transient( $transient_key, $theme, 86400 );
}

function get_user_theme_choice( $user_id ) {
    // Sleutel voor de transient
    $transient_key = 'user_theme_choice_' . $user_id;

    // Ophalen van de gebruikersthema keuze
    return get_transient( $transient_key );
}

// Voorbeeld van het instellen en ophalen van een themakeuze
$user_id = get_current_user_id(); // Haal de huidige gebruikers-ID op
save_user_theme_choice( $user_id, 'dark_mode' );

// Later ophalen van de themakeuze
$user_theme_choice = get_user_theme_choice( $user_id );
PHP

In dit voorbeeld slaan we de themakeuze van een gebruiker op met set_transient() en halen we deze later op met get_transient(). Dit is een efficiënte en WordPress-conforme manier om tijdelijke gebruikerspecifieke gegevens te beheren zonder gebruik te maken van traditionele PHP-sessies.

$_FILES – Bestandsuploads beheren

De $_FILES superglobal is cruciaal voor het verwerken van bestandsuploads. In WordPress moet men altijd WordPress-specifieke functies gebruiken voor het uploaden en verwerken van bestanden om veiligheid en compatibiliteit te waarborgen.

  • WordPress Functie: wp_handle_upload() voor het veilig verwerken van bestandsuploads.
  • Voorbeeld: Bij het uploaden van een bestand via een formulier:
$file = $_FILES['userfile'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $file, $upload_overrides );
PHP

$_SERVER – Serverinformatie toegankelijk maken

Deze superglobal bevat waardevolle informatie over de serveromgeving en de huidige pagina-aanvraag. Het wordt vaak gebruikt om IP-adressen te controleren, de gebruikte server software te identificeren, en meer.

  • WordPress Functie: admin_url() voor het ophalen van de URL van het admin gebied.
  • Voorbeeld: Om de URL van het WordPress admin dashboard te krijgen:
$admin_url = admin_url();
PHP

Conclusie

Een grondige kennis van PHP superglobals, gecombineerd met specifieke WordPress functies, stelt je in staat veilige, effectieve en aanpasbare oplossingen te creëren.

Het is belangrijk om altijd de ‘best practices’ te volgen, waaronder datazuivering en -validatie, om veilige en betrouwbare WordPress websites en plugins te ontwikkelen.

Tags: