テンプレートタグ投稿記事一覧
日別の投稿記事一覧
カテゴリーページのカテゴリーネームを表示する
ウィジェットなどの『カテゴリー』項目をクリックした時、もしそのカテゴリーが空でもタイトルには【カテゴリーネーム】(例えば「ブログ」とか「趣味」とか)を表示させたいですよね?
こんな風に…↓
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() をお使いください。