web-dev-qa-db-ja.com

ページIDからwp_title()を変数に取り込む

それは不可能だと確信していますが、投稿のIDがわかっていればwp_title()の結果を変数に入れることができますか?

だから、例えば私は "blog"ページにいて、 "about"ページのタイトルを変数に入れたい(この質問のように<title>タグには入れないでください: wp_title filterを使ったタイトルの設定 )。

1
Paul

あなたが言ったように、wp_titleは現在の投稿に対してのみ機能するので、現在の投稿ではない投稿のためにそれを変数に保存するのは少しトリッキーかもしれません。

しかし、wp_titleは単数のpost/page/cptだけでなく、あらゆる種類のアーカイブに対しても機能します。そのため、単一の投稿/ページに関するコア関数の一部をコピーするカスタム関数を簡単に作成できます。

   function get_the_wp_title( $postid = '', $sep = '&raquo;', $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に対して定義されているすべてのフィルタもこの関数に対して機能することに注意してください。

2
gmazzap

wp_title()関数には、2番目のパラメーター 'display'があります。変数のタイトルを取得するには、これをfalseに設定します。

<?php $variable = wp_title('&raquo;',FALSE); ?>

ページIDでタイトルを取得したい場合は、

<?php
$pageID = 86;
$page = get_post($pageID);
echo $page->post_title;
?>
0
Tolea Bivol