Est-il possible de changer le titre de la page à la volée à partir du plugin?
J'ai essayé global $ post, mais le plugin semble courir après.
Des idées?
Edit: J'écris des pages à la volée, basées sur la même page/publication, afin que chaque page affiche le même titre. Chercher un moyen de faire via un shortcode ou écrire mon propre plugin/fonction
Il y a un filtre pour ça:
function wpse_alter_title( $title, $id )
{
// $id = $post->ID;
// alter the title here
return $title;
}
Si vous souhaitez modifier les titres "Protégé" et "Privé", vous avez besoin d'autres filtres:
// Preserve the "%s" - else the title will be removed.
function wpse_alter_protected_title_format( $title )
{
return __( 'Protected: %s' );
}
function wpse_alter_private_title_format( $title )
{
return __( 'Private: %s' );
}
Enfin, vous devez ajouter vos rappels de filtre suffisamment tôt.
function wpse_load_alter_title()
{
add_filter( 'the_title', 'wpse_alter_title', 20, 2 );
add_filter( 'protected_title_format', 'wpse_alter_protected_title_format' );
add_filter( 'private_title_format', 'wpse_alter_private_title_format' );
}
add_action( 'init', 'wpse_load_alter_title' );
Cela dépend du contexte dans lequel le titre de votre page est rendu et de la manière dont les données sont introduites.
Considérer ce qui suit:
<h2><?php the_title(); ?></h2>
La solution impliquerait de s’accrocher au filtre the_title
et de le modifier rapidement.
Que dis-tu de ça?
<h2><?php echo $post->post_title; ?></h2> // not Nice!
Et ce n'est pas agréable à cause des problèmes de modification. Il est difficile de savoir comment le $post
a été peuplé en premier lieu. Considérer:
foreach( get_posts( ... ) as $post ):
...
Pas de place pour y accrocher, à première vue. Mais cela peut être fait dans la requête de messages réelle. Consultez le filtre found_posts
.
Cependant, considérez ce qui suit:
$post = $wpdb->get_row( "SELECT .... " );
echo "<h2>$post->post_title</h2>"
C'est dingue.
Le fait est que, selon votre situation, il existe probablement une bonne solution. Vérifiez le fichier de modèle, voyez comment le titre est rendu. Fixez-le pour qu'il soit confortable ou faites travailler votre plugin un peu plus fort.
Et vous ne pourrez jamais modifier le titre via un plugin si mysql_query()
est utilisé directement pour récupérer le titre. Oui, j'ai effectivement vu cela fait. Certaines personnes vont même jusqu'à coder en dur dans le modèle. Comme front-page.php contiendra <h2>Home</h2>
et n'utilisera même jamais le $post->post_title
ou n'interrogera jamais la base de données.
Donc, dépend du contexte et de la situation.