Je suis presque sûr que ce n'est pas possible, mais puis-je obtenir le résultat de wp_title()
dans une variable si je connais l'identifiant de post?
Ainsi, par exemple, je suis sur une page "blog" et je veux avoir le titre de page "environ" dans une variable (pas dans la balise <title>
comme dans cette question: Définition du titre à l'aide du filtre wp_title ).
Comme vous l'avez dit, wp_title
ne fonctionne que pour la publication en cours, il peut donc être un peu délicat de l'enregistrer dans une variable pour une publication qui n'est pas la publication actuelle.
Cependant, wp_title
fonctionne non seulement pour les postes singuliers/page/cpt mais aussi pour tous les types d'archives. Il est donc facile de créer une fonction personnalisée qui copie la partie de la fonction principale qui concerne la publication/page unique.
function get_the_wp_title( $postid = '', $sep = '»', $seplocation = '' ) {
if ( ! $postid ) return '';
$post = get_post($postid);
if ( ! is_object($post) || ! isset($post->post_title) ) return '';
$t_sep = '%WP_TITILE_SEP%';
$title = apply_filters('single_post_title', $post->post_title, $post);
$prefix = '';
if ( ! empty($title) ) $prefix = " $sep ";
if ( 'right' == $seplocation ) { // sep on right, so reverse the order
$title_array = explode( $t_sep, $title );
$title_array = array_reverse( $title_array );
$title = implode( " $sep ", $title_array ) . $prefix;
} else {
$title_array = explode( $t_sep, $title );
$title = $prefix . implode( " $sep ", $title_array );
}
return apply_filters('wp_title', $title, $sep, $seplocation);
}
Le code est en grande partie copié par la fonction core wp_title
.
Notez que tous les filtres définis pour wp_title
fonctionnent également pour cette fonction.
la fonction wp_title () a un second paramètre 'display'. Définissez-le sur false pour obtenir le titre dans une variable:
<?php $variable = wp_title('»',FALSE); ?>
Si vous souhaitez obtenir le titre par ID de page:
<?php
$pageID = 86;
$page = get_post($pageID);
echo $page->post_title;
?>