mailto-shortcode mit wp antispambot & sage9

wp & sage9 logo shortcodes in wp & sage9

in einem sage9-projekt möchte ich an mehreren stellen einen mailto-link ausgeben. um die email-adresse zu schützen, ohne ein plugin zu nutzen, soll die funktion antispambot() von wordpress zum einsatz kommen (konvertiert die email-adresse in html-entities).

nur, im editor lässt sich kein php-code auf den seiten einbinden.

als gute lösung bietet sich ein shortcode an. dieser übernimmt die aufgabe des konverieren im hintergrund und gibt den html-code zurück. in sage wird der code dazu in der app/wp-content/themes/meintheme/app/setup.php datei abgelegt.

dass der shortcode verfügbar wird beim aufruf, muss bei dessen registrierung (add_shortcode…) der callback funktion unbedingt “__NAMESPACE__” vorangestellt werden (__NAMESPACE__. ‘\\meine_callback_funktion’).

und so wird der code auf einer seite genutzt:
[createEncodeMailTo email=”youremail@example.com”]

nützliche links:

die funktion:

/**
 * encode mail & return mailto link
 * 
 * [createEncodeMailTo email="youremail@example.com"]
 *
 * @param [array] $atts
 * @return [str] $output
 */
function uvomalt_mailto_encoder($atts){
    $params = shortcode_atts([
        'email' => '#',
        ], $atts );
    
    $output = '<a href="' . antispambot("mailto:" . $params['email']) . '">' . antispambot($params['email']) . '</a>';

    return $output;
}
add_shortcode( 'createEncodeMailTo', __NAMESPACE__ . '\\uvomalt_mailto_encoder' );