Comment changer simplement le titre du post wordpress mais pas les éléments de menu.
add_filter('the_title', 'wordpress_title');
function wordpress_title(){
return 'New title';
}
Si vous utilisez des menus de navigation personnalisés, vous pouvez le faire entièrement sans code. Allez à Appearance
-> Menus
et modifiez le "libellé de navigation" de chaque élément de menu que vous souhaitez différencier.
add_filter('the_title', 'wordpress_title');
function wordpress_title($title){
//Return new title if called inside loop
if ( in_the_loop() )
return 'New title';
//Else return regular
return $title;
}
Avez-vous essayé la vérificationin_the_loop()
conditionnelle pour renvoyer le nouveau titre uniquement si elle est appelée en boucle intérieure. Cela signifie que le menu de navigation ne sera pas affecté.
<?php add_filter('the_title', function($title) { return '<b>'. $title. '</b>';}) ?>
Vous avez besoin du bon ensemble de conditions:
add_filter( 'the_title', 'change_my_title');
function change_my_title ($title) {
if ( in_the_loop() && get_the_ID() === url_to_postid(full_url($_SERVER))) {
$title = $title . " added by plugin";
}
return $title;
}
// Function found here: http://stackoverflow.com/a/8891890/358906
function full_url($s) {
$ssl = (!empty($s['HTTPS']) && $s['HTTPS'] == 'on') ? true:false;
$sp = strtolower($s['SERVER_PROTOCOL']);
$protocol = substr($sp, 0, strpos($sp, '/')) . (($ssl) ? 's' : '');
$port = $s['SERVER_PORT'];
$port = ((!$ssl && $port=='80') || ($ssl && $port=='443')) ? '' : ':'.$port;
$Host = isset($s['HTTP_X_FORWARDED_Host']) ? $s['HTTP_X_FORWARDED_Host'] : isset($s['HTTP_Host']) ? $s['HTTP_Host'] : $s['SERVER_NAME'];
return $protocol . '://' . $Host . $port . $s['REQUEST_URI'];
}