それは不可能だと確信していますが、投稿のIDがわかっていればwp_title()
の結果を変数に入れることができますか?
だから、例えば私は "blog"ページにいて、 "about"ページのタイトルを変数に入れたい(この質問のように<title>
タグには入れないでください: wp_title filterを使ったタイトルの設定 )。
あなたが言ったように、wp_title
は現在の投稿に対してのみ機能するので、現在の投稿ではない投稿のためにそれを変数に保存するのは少しトリッキーかもしれません。
しかし、wp_title
は単数のpost/page/cptだけでなく、あらゆる種類のアーカイブに対しても機能します。そのため、単一の投稿/ページに関するコア関数の一部をコピーするカスタム関数を簡単に作成できます。
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);
}
コードの大部分は コアwp_title
関数 からコピーされています。
wp_title
に対して定義されているすべてのフィルタもこの関数に対して機能することに注意してください。
wp_title()関数には、2番目のパラメーター 'display'があります。変数のタイトルを取得するには、これをfalseに設定します。
<?php $variable = wp_title('»',FALSE); ?>
ページIDでタイトルを取得したい場合は、
<?php
$pageID = 86;
$page = get_post($pageID);
echo $page->post_title;
?>