Nakkan Base

WordPress

テンプレートタグ the_title()とget_the_title()

いっつも迷い、適当に使っているタイトル取得タグ。

今回は、

the_title()

get_the_title()

について書き留めておきます。

WordPressの「固定ページ」のタイトルを編集した時に、フロントも自動で変わり表示されるようにするにはどのテンプレートを使うか。

wp_title()

これはいきなり非推奨だった。し、固定記事のタイトル取得には違うようでした。

single_post_title()

これも違う。

で、この二つを試すことにしたのですが、まず

the_title()

これは必ずループ内で使うということだったので違うなぁ…と。

それで最後の望みをかけて(大げさ 笑)、試すことにしました。

get_the_title( $ID )

そうだ、これのような気がしてきたぞ。確か「$ID」のところに記事番号を入れるんだ。

(この「記事番号」というのは、例えば「固定ページ一覧」の各タイトルをhoverすると、下に「post=38」みたいに出てくる)

ビンゴーーーー!

変更したタイトルが正しく表示されました。

ファイルが消えた?!

ローカルのWordPressを表示しようとしたら、「There has been a critical error on this website.」が出てしまった。ひぇ〜。

ググったら、「DEBUGで検証するのが有効」らしい…ということで、wp-config.phpファイルを探すが、なぜか無い。

それでサーバーからダウンロードしてそのままフォルダに入れたら、今度はError establishing a database connection (データベース接続確立エラー)というエラーが出てしまいました。

あっ、そうか。ローカルホストだ。

中身はサーバーのになってるから、ローカル仕様に書き直します。

これでうまくいくはず…と思いきや、今度は恐怖のオレンジコードが…!

これによると、comment-template.phpに何か問題があると書いてある。

それで調べてみようと思ったら、またこのファイルが無い!

何もしていないのに、どうしてファイルが消えてるんだ?!

そういえばこれまでにも何度か、消してもいないファイルがなくなっていることがあった。これはどうしてだろう?

とにかく無ければ作るしかない。

またダウンロードしてきてフォルダに入れた。

じゃあ今度はcomment.phpが無い!

こうしてcomment.phpを入れて、やっと蘇りました。メデタシ。

でもいつか、この「ファイルが勝手に消える問題」を何とかしたいと思うのであった。。。

【投稿ページ】カテゴリー別でページャー設定

投稿ページで、「前の投稿記事」「次の投稿記事」というページャーを貼るとき使うのが

<?php the_post_navigation(); ?>

でも、これだとカテゴリーごとに分けている意味が無視されて、単なる時系列順にリンクされてしまいます。

結果、「ブログ」や「写真」や「お知らせ」など、一緒くたにリンクされてしまうのです。ユーザビリティ悪すぎ。

私はページャーが苦手なので(種類が多すぎてどれを使えばいいのか迷ってしまう)、色々検索して試してみるも、やっぱりよくわからない。

でもって、やっと見つけました。

私にでもわかるように簡潔かつ完璧に解説してくださっていたサイトさんが。

★022/個別ページで次の投稿・前の投稿へのリンクを表示する

結果は、以下の通りです。

=single.php=

  <nav class="nav">
  
  <?php the_post_navigation(array(
    'in_same_term' => true,
    'prev_text' => '&laquo; 前へ',
    'next_text' => '&raquo; 次へ',
  )); ?>
   
  </nav>

これでカテゴリー別にリンクできました。

「uncategorized」を消したい

カテゴリー欄ですが、順番が自由に変えられたら問題なかったのに、必然的にアルファベット順に表示されてしまうので困ったことに。

設定したカテゴリーの真ん中に「uncategorized」のヤツが陣取ってしまうのです。

それでこれを消してしまえ!と思いました。

とてもわかりやすく教えてくださっているサイトさんがありました。

★WordPressの「未分類」カテゴリーを非表示にする方法

消えたわ。

カテゴリー名の取得と表示

「カテゴリー検索をしたときにズラズラッと出てくる記事のトップに、そのカテゴリー名を表示したい」という時。

get_the_category()』を使いましょう。

『get_the_category()』では、「カテゴリーID」「カテゴリー名」「カテゴリースラッグ」などが取得できます。

<?php   
      $category = get_the_category();   
      $cat_id   = $category[0]->cat_ID;   
      $cat_name = $category[0]->cat_name;   
      $cat_slug = $category[0]->category_nicename;   

                    echo $cat_id;   // カテゴリーIDを表示   
                    echo $cat_name;   // カテゴリー名を表示
                    echo $cat_slug;  // カテゴリースラッグを表示   
?>

私の場合、「カテゴリー名」だけ表示できれば良いので、

<?php $category = get_the_category();  echo $category[0]->cat_name; ?>

って感じでしょうか。

でも、実際に出力してみると、なんだか使い勝手が悪い。出てほしいカテゴリー名が出てこないのだ。

なので、属している全てのカテゴリ名を取得することにしました。

<?php 
          $categories = get_the_category();  
                if($categories) { 
                          foreach($categories as $categorie) { 
                                  $output .= $categorie->name; 
                          } 
                          echo $output; 
                 } 
?>

これで出てほしいカテゴリー名も全て出てくれましたが、スペースも「、」もなく文字が連なって出てくるので、これでは見栄えが悪すぎるだろ…。

それで、今一度カテゴリーを整理して、親子関係を見直してみることにしました。その上で、親カテゴリー名のみを表示したいと思いました。

解決してくれてる人がいらっしゃいました♪

<?php
$cats = get_the_category();
$cat = $cats[0];
$cat_name = $cat->cat_name;
$cat_slug = $cat->category_nicename;
if ($cat->parent){
$parent = get_category($cat->parent);
$cat_name = $parent->cat_name;
$cat_slug = $parent->category_nicename;
echo "<span class=\"ico-cate $cat_slug\">$cat_name</span>";
} else {
echo "<span class=\"ico-cate $cat_slug\">$cat_name</span>";
}
?>

これで親カテゴリー名のみがきちんと表示されるようになり、すっきりいたしました。

【参考になったサイト様】

★投稿記事のカテゴリ名の表示、カテゴリIDの取得

★【WordPress】カテゴリを取得できるget_the_categoryの使い方

★【WordPress】親カテゴリの情報のみ取得したい