Nakkan Base

テンプレートタグ投稿記事一覧

日別の投稿記事一覧

カテゴリーページのカテゴリーネームを表示する

ウィジェットなどの『カテゴリー』項目をクリックした時、もしそのカテゴリーが空でもタイトルには【カテゴリーネーム】(例えば「ブログ」とか「趣味」とか)を表示させたいですよね?

こんな風に…↓

category.phpには、「カテゴリー名を出力する」ために

<?php
    $category = get_the_category(); // これがまず必要
    $cat_name = $category[0]->cat_name; // カテゴリ名を変数$cat_nameに代入
    echo $cat_name; // カテゴリ名を出力
?>

のように記述してありますが、これだと上のようにはならなくて、タイトルが表示されたりされなかったり(投稿ページのカテゴリータイトルは表示されたが、固定ページのそれは非表示)。

このようになります。↓

実はこの「カテゴリーの表示」には他にも問題が発生しまして、PHPを8.0以上にアップしたせいか、今までと同じ記述をしてもエラーが出てしまうという…(怖💦)

それらが全て絡んでいるのか、はたまた別々の問題なのかさえもわからず、悩みまくりです(現在進行形)😱

で、とりあえずこの問題に関しては解決したのでメモ。

これは

<h3><?php single_cat_title(); ?></h3>

このたった1行でよかったんです!

これで最初の画像のように、全ての項目においてちゃんとカテゴリータイトルが表示されるようになりました。

テンプレートタグ the content

  <?php the_content( '←このテンプレートの詳細を見る→' ); ?>

自分で書いておきながら、なぜこれで「←このテンプレートの詳細を見る→」にリンクが貼られるのかわからなかった。

詳細は、以下でした。

使い方

<?php the_content( $more_link_text, $stripteaser ); ?> 

パラメータ

$more_link_text
(文字列) (オプション) <!--more-->
 以降を読むためのリンクとして表示するテキスト。初期値: '(more...)'

$stripteaser
(真偽値) (オプション) <!--more-->
 以前の内容を隠すかどうか。初期値: false
   ・true - <!--more-->
 以降のみを表示
   ・false - 本文をすべて表示 - デフォルト

ほほう…。

テンプレートタグ 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」みたいに出てくる)

ビンゴーーーー!

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

一番簡単なページャーを使いたい

それは、テンプレートタグ/wp link pages。

single.phpなどの使いたい場所(ただしループ内)に <?php wp_link_pages(); ?> でOK。

この()の中は、以下のようなデフォルトになっています。

<?php         
$defaults = array(            
 'before'           => '<p>' . __( 'Pages:' ),            
 'after'            => '</p>',            
 'link_before'      => '',            
 'link_after'       => '',            
 'next_or_number'   => 'number',             
 'separator'        => ' ',             
 'nextpagelink'     => __( 'Next page' ),            
 'previouspagelink' => __( 'Previous page' ),            
 'pagelink'         => '%',             
 'echo'             => 1
 );            
             wp_link_pages($defaults); 
?>

で、なぜここに書いておくかというと、上のままでは実際のページに「固定ページ 1 2」と表示されるから。

ちょっと考えたけど、要するに「’before’=>'<p>’.__(‘Pages:’),」の「Pages:」が日本語に訳されてしまっているんじゃないかと思って、「Page」に変えてコードを貼ってみた。

そしたら希望通り「Page 1 2」の表示になりました。

何と言っても! 便利テンプレート

私が大好きな(いやいや、おかしいだろ)テンプレート3つです。

  • get_permalink()
  • get_the_title()
  • get_template_directory_uri()

なぜ好きかというと、このどれかを使えば結構何でもうまく解決するから。
「安易」と笑うなかれ。
思う通りに表示してくれるんなら、何と言っても最高なんです。


★echo get_permalink();

 まずは、()の中に記事IDが入る場合。
 <a href=”<?php echo get_permalink( 268 ); ?>”>My link to a post or page</a> 

 それから、記事タイトルが入る場合。
 <a href=”<?php echo esc_url( get_permalink( get_page_by_title( ‘Monthly Events’ ) ) ); ?>”>Monthly Events</a>

  

★echo get_the_title();

 現在の投稿のタイトルを表示します。
 <?php echo get_the_title(); ?>

 記事IDを入れると、その投稿のタイトルを表示します。
 <?php echo get_the_title( $ID ); ?>

  

★echo get_template_directory_uri();

現在のテーマのディレクトリへの絶対パスを取得。

<img src="<?php echo get_template_directory_uri(); ?>/img/hero.jpg">


 ローカルからWordPress化するときについ忘れがちになるけど、このテンプレートがなければパスが通らず表示されない。なので便利。


 ただ、子テーマが使用されている場合は注意です。
 子テーマのディレクトリへの絶対パスを取得するには get_stylesheet_directory_uri() をお使いください。