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:
- worpress codex- shortcode
- eine gute anleitung zu shortcodes (en)
- suchergebnisse für “shortcode in wordpress erstellen”
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' );