Je souhaite ajouter du texte aux titres de publication d'un type de publication personnalisé spécifique, mais le filtre ci-dessous n'a pas fonctionné. Au lieu de ne changer que les titres de publication de ce CPT, il a modifié tous les titres des pages de ce dernier - éléments de menus, publications dans les boucles secondaires, etc.
Qu'est-ce que je fais mal? Je suppose que cela a quelque chose à voir avec la portée de get_post_type ().
add_filter( 'the_title', 'add_cpt_prefix' );
function add_cpt_prefix( $title ) {
if ( get_post_type() == 'press' ) {
$title = '<span>Press:</span> ' . $title;
}
return $title;
}
Vous pouvez exclure des menus en testant l'identifiant de la publication:
add_filter( 'the_title', 'add_cpt_prefix' );
function add_cpt_prefix( $title ) {
global $id, $post;
if ( $id && $post && $post->post_type == 'press' ) {
$title = '<span>Press:</span> ' . $title;
}
return $title;
}
Vous pouvez globaliser $post
pour élaborer le type de publication.
Exemple:
add_filter( 'the_title', 'add_the_title_prefix' );
function add_the_title_prefix( $title )
{
global $post;
if ( 'custom_post_type_name' != $post->post_type )
return $title;
return "<span>Press:</span> {$title}";
}
Le problème n'était pas avec get_post_type () comme je le pensais. La proposition de Bainternet de $ post-> post_type a donc donné les mêmes résultats. La suggestion de Bainternet à partir des commentaires était ce qui était nécessaire:
utilisez add_filter juste avant votre boucle et ajoutez remove_filter après la boucle
Depuis que cette question a été ajoutée, le paramètre $id
a été ajouté au point d'ancrage de l'action the_title
. Alors maintenant, vous pouvez obtenir le type de message facilement en utilisant get_post_type()
as so:
function actionTheTitle($title, $id)
{
$post_type = get_post_type($id);
// Clever code here
return $title;
}