index.php関連はこちら↓
投稿した記事に用いられる関数のメモを残します。
WordPressテンプレート階層
まず事前に、WPにはテンプレート階層が存在し、ファイル名によって表示するページのテンプレートが決まるようになっています。つまりは、命名規則があります。
今回は、個別記事ページを作っていきたいので「single.php」ファイルを作成します。
1年前にちょこっとかじったPHPのFW「Laravel」も命名規則バッキバキでしたw
PHPのFWってこういうのが多いのか。。?(いや、そんなことないか?)
個別記事ページに使う関数/single.php
1.the_content()
記事の中身を表示させる関数。ブロックエディタで作成したHTMLがそのまま書き出されるためタグで囲う必要はなし!
2.wp_link_pages()
記事内の改ページに対するページャー表示。自動的にHTMLが書き出されるためタグで囲う必要はない。引数にパラメータを入れる事で、任意の文字列にしたりカスタマイズが可能。
2-1.wp_link_pages()パラメータの癖
任意の文字列にする場合、nextpagelinkとpreviouspagelinkにStringを代入するのですが、また別の引数であるnext_or_numberがnumber以外の設定時でなければ効きません。
個人的に、ハマったポイントなのですが、以下のコードでちゃんと実証ができました。
<?php
$args = array(
'next_or_number' => '',
'nextpagelink' => 'next page',
'previouspagelink' => 'previous page',
);
wp_link_pages($args); ?>
このパラメータを操作する参考記事はこちらです。
https://elearn.jp/wpman/function/wp_link_pages.html
https://developer.wordpress.org/reference/functions/wp_link_pages/
この改ページ機能って使った事ないのですが、需要あるのですかね・・・うーん、思いつかない。。。
3.the_author()
記事を書いた人を表示する関数。プロフィール等のユーザー登録情報まで表示させたい時は、get_the_author_meta()関数を用いて、引数に取得したいパラメータを入れる。
get_the_author_meta()については、書き出しがされないのでechoが必要。
get_the_author_meta()パラメータ一覧
4.previous_post_link()/next_post_link()
「次の記事」と「前の記事」を表示させるページャー。引数に「%link」と入れることで、前後の記事タイトルが<a>タグで出力される。
<?php next_post_link('%link'); ?>
<?php previous_post_link('%link'); ?>
4-1.前後に記事がないかを確認する
上記previous_post_link()/next_post_link()の関数を使うだけでは、前後にページがないときも発動してしまうので、
get_next_post()
get_previous_post( )
を使ってifで制御させる。
4-2.ページャーを任意の文字列に変更する。
<?php if(get_next_post()): ?>
<div class="next-page"><?php next_post_link( '%link','次の記事'); ?></div>
<?php endif;
if(get_previous_post( )):?>
<div class="prev-page"><?php previous_post_link( '%link','前の記事'); ?></div>
<?php endif; ?>
4-3.ページャーを同一カテゴリーのみにスコープさせる。
第3引数にTRUEを入れる。
参考記事:https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/next_post_link
<?php if(get_next_post()): ?>
<div class="next-page"><?php next_post_link( '%link','次の記事',TRUE); ?></div>
<?php endif;
if(get_previous_post( )):?>
<div class="prev-page"><?php previous_post_link( '%link','前の記事',TRUE); ?></div>
<?php endif; ?>
5.comment_form()/wp_list_comments()
記事内コメントの表示に関する関数。
コメント機能は、comments.phpファイルを作成してパーツを外出し。
個別記事(single.php)内にcomments_template();関数で呼び出す。
<?php comments_template(); ?>
comments.php 内に、comment_form()/wp_list_comments()を記述。
comment_form():入力フォームの表示
注)comment_form()だけでは、投稿されたコメントが表示されません。あくまでもフォームのみ。
wp_list_comments():入力されたコメントの表示。<li>タグで書き出されるため、<ul>もしくは<ol>で囲む。
<ol>
<?php wp_list_comments(); ?>
</ol>
<div>
<?php comment_form(); ?>
</div>
6.the_post_thumbnail()/アイキャッチ画像の表示
アイキャッチについてのfunctions.php記載方法、関数の説明については、index.phpについて記載した記事をご参照ください。
アイキャッチに関する関数の記事はこちら。
下記コードは、アイキャッチの設定がない場合は画像を表示しません。(elseに何も記載しない)
index.phpの記事内では、任意のclass名を付けておりませんでしたが、下記コードでは任意のclass名に置き換えをしています。
<?php
if(has_post_thumbnail( )){
the_post_thumbnail( 'medium', array('class' => 'th-image'));
}
?>
7.パンくずリストの表示
get_the_category()でカテゴリを取得して、配列を格納。<a>タグにget_category_linkでURLを書き出す。Stringの表示はget_the_category()の戻り値であるcat_nameを出力。
get_the_category()の戻り値一覧はこちら
get_category_link()の詳細はこちら
<ul class="bc">
<li class="bc-list"><a href="<?php echo esc_url(home_url('/')); ?>">Home</a></li>
<li class="bc-list">
<?php
$cat = get_the_category( );
$cat = $cat[0];
{echo '<a href="'.get_category_link($cat ->term_id).'">'.$cat->cat_name.'</a>';} ?>
</li>
</ul>
パンくずリストは、functions.phpで設定して、各個別ページphpには実行関数で読み込むという方法もあるそうです。こちらの記事がとても参考になります。
WordPress プラグインなしでパンくずリストを表示 | ウインドミル (wind-mill.co.jp)
カテゴリーごとのページを表示する場合
カテゴリーごとの表示は、category.phpもしくはarchive.phpが存在しない場合、index.phpを表示させる仕様になっています。詳しくは、テンプレート階層を参照。
カテゴリごとのページを表示させたい場合は、category.phpを作成する。
1.single_cat_title()
カテゴリー名称を呼び出す関数。例えば、「News」や「Diary」など。
この関数は、loop処理に入らないように記述する。
固定ページの作成
管理画面 > 固定ページ > タイトルを入れる > パーマリンク
パーマリンクにPHPファイル名を入れる。
例えば、phpファイル名が「page-aaa.php」の場合、パーマリンクには「aaa」と記入。
phpファイルで作りこむ部分と、管理画面の固定ページ上で入力した部分をドッキングする事が可能。
部分的に文言の変更が時々あったりする場合に、HTMLの知識がなくても更新ができるため便利です。
管理画面から入力された情報を読み込む場合は、phpファイル内に下記コードを追加。
<?php
if(have_posts()):
while(have_posts()):the_post();
the_content();
endwhile;
endif;
?>