WordPress variabelen

In dit artikel komt aan bod hoe gebruik gemaakt kan worden van variabelen binnen WordPress om vervolgens toe te passen in een post, pagina en/of contactformulier (zowel post als e-mail).

Alle informatie moet worden opgeslagen in een CSV-bestand in de root van de website. In dit voorbeeld zullen trainingscodes en -datums worden gebruikt. Het CSV-bestand ziet er als volgt uit:

code;datum
code1;datum1
code2;datum2
code3;datum3

Wanneer de onderstaande codes susscesvol zijn toegepast kan bijvoorbeeld de shortcode [ training code="code1" ] worden gebruikt, verwijder hiervoor de spaties aan het begin en eind.

Vervolgens dienen de onderstaande codes te worden toegevoegd aan de functions.php.

Doe dit bij voorkeur in het child-theme om bij updates te voorkomen dat alle informatie verloren gaat.

function training_datum($atts) {
    $csv_file = 'bestand.csv'; 

    if (($handle = fopen($csv_file, "r")) !== false) {
        $datum_codes = array();
        while (($data = fgetcsv($handle, 1000, ";")) !== false) {
            $datum_codes[$data[0]] = $data[1];
        }
        fclose($handle);
    } else {
        return 'Fout bij het inlezen van het CSV-bestand: ' ;
    }

    $datum = $datum_codes[$atts['code']] ?? '';

    return $datum;
}

add_shortcode('training', 'training_datum');

Deze bovenstaande functie verzorgt het inlezen van het CSV-bestand en haalt de juiste datum a.d.h.v. de code uit het bestand.

add_filter( 'wpcf7_form_elements', 'dacrosby_do_shortcodes_wpcf7_form' );
function dacrosby_do_shortcodes_wpcf7_form( $form ) {
    $form = do_shortcode( $form );
    return $form;
}

add_filter( 'wpcf7_mail_components', 'dacrosby_do_shortcodes_wpcf7_mail_body', 10, 2 );
function dacrosby_do_shortcodes_wpcf7_mail_body( $components, $number ) {
    $components['body'] = do_shortcode( $components['body'] );
    $components['subject'] = do_shortcode( $components['subject'] );
    return $components;
}

Bron: https://snippets.cacher.io/snippet/1d3090c8dfedb67b8b4f

De bovenstaande functies dienen voor het functioneren binnen de contacts forms 7.