Im folgenden Beispiel legen wir einen Filter an, der ein als einem "®" hochstellt.
Dazu legen wir in der functions.php folgende Funktion an:
function filter_content() {
$content = get_the_content();
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('®','<sup>®</sup>',$content);
$content = str_replace('®','<sup>®</sup>',$content);
echo $content;
}
Jetzt brauchen wir noch den dazugehörigen Hook, den tragen wir ebenfalls in der functions.php ein:
add_filter('the_content', 'filter_content');
Dieser Filter betrifft jetzt nur den Content, beim Einsatz von wp_nav_menu wird der Filter nicht angewendet. Daher kommt nun ein weiterer Hook zum Einsatz:
add_filter('wp_nav_menu_items','change_nav_title', 10, 2);
Die Funktion change_nav_title müssen wir nun ebenfalls in der functions.php erstellen:
function change_nav_title( $nav, $args ) {
$content = $nav;
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('®','<sup>®</sup>',$content);
$content = str_replace('®','<sup>®</sup>',$content);
return $content;
}
Da die Funktionen sich in ihrer Funktionalität überschneiden räumen wir noch ein wenig auf, sodass am Ende die Logik gekapselt wird. Am Ende erhalten wir folgenden Code in unserer functions.php:
function _replaceText($content, $echo, $args = null )
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('<sup>®</sup>','®',$content);
$content = str_replace('®','<sup>®</sup>',$content);
$content = str_replace('®','<sup>®</sup>',$content);
if( $echo ) {
echo $content;
else {
return $content;
}
}
function filter_content() {
_replaceText( get_the_content(), true );
}
function change_nav_title( $nav, $args ) {
_replaceText( $nav, false, $args );
}
add_filter('the_content', 'filter_content');
add_filter('wp_nav_menu_items','change_nav_title', 10, 2);