

全投稿記事のアーカイブページの作成方法はいくつかあり、上記記事では固定ページを使用して全投稿記事の一覧ページ(アーカイブページ)を作成する方法を解説しています。
本記事ではfunctions.phpに記述する形で投稿記事一覧ページを作成する方法を解説していきます。
functions.phpにコードを記述することで、archive.php
に指定したurlでアクセスできるようになります。
記事一覧ページを有効にしてのURLを指定する
結論としては、functions.php
に以下のコードを設置すればOKです。
$args['has_archive']
の値がURLの一部になります。値は自分で決めましょう!(本記事ではmy_postとします。)
function post_has_archive( $args, $post_type ) {
if ( $post_type == 'post' ) {
$args['has_archive'] = true;
$args['rewrite']['slug'] = 'my_post'; // 任意のslug名
}
return $args;
}
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );
http://localhost:10124/my_post/にアクセスします。
プラグインのshow current templateを見て、テンプレートがarchive.php
になっていればOKです。
/my_post
にアクセスしてもindex.php
などが表示される場合はWordPress管理画面>設定>パーマリンクから何もせずに更新をしてみてください。
再び/my_post
にアクセスするとarchive.php
が表示できます。
解説
上記コードの解説をしていきます。
functions.phpにこのコードをコピペすればいいよ!!という記事はたくさんあるのですが、それらの記事のコードが何をしているのかいまいちわからなかったので勉強がてら調べてみました。
このコードを理解するには、
- (フィルターフック )
register_post_type_args
register_post_type
関数
の知識が必要です。
フィルターフックの使い方
$tag・・・フィルターフック名
$function_to_add・・・コールバック関数
$priority・・・優先順位
$accepted_args・・・関数が受ける引数の数
フィルターフックの詳しい解説は参考URLよりご覧ください。
register_post_type_argsの使い方
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );
今回の場合、
- $tag・・・register_post_type_args(フィルターフック名)
- $function_to_add・・・post_has_archive(コールバック関数)
- $priority・・・10(優先順位)
- $accepted_args・・・2(関数が受ける引数の数)
に当たります。

register post typeの使い方
function post_has_archive( $args, $post_type ) {
if ( $post_type == 'post' ) {
$args['has_archive'] = true;
$args['rewrite']['slug'] = 'my_post'; // 任意のSlug
}
return $args;
}
$post_type(文字列) (必須) 投稿タイプ(最大 20 文字、大文字や空白は禁止)。初期値: なし
$args(配列) (オプション) 引数の配列。初期値: なし
引数
has_archive
has_archive(真偽値|文字列) (オプション) この投稿タイプのアーカイブを有効にする。デフォルトでは、アーカイブのスラッグとして $post_type が使われる。
初期値: false
参考:リライトが有効になっている時は、適切なリライトルールが生成される。rewrite オプションを指定して、使用されるスラッグを変更することもできる。
関数リファレンス/register post type – WordPress Codex 日本語版
$args['has_archive'] = true;
投稿記事一覧ページを作成したいので、アーカイブを有効にします→has_archiveをtrueにする
rewriteオプションを使用すればアーカイブのスラッグを変更することができると書いてあるので、次のrewriteオプションで設定していきます。
rewrite
rewrite(真偽値|配列) (オプション) この投稿タイプのパーマリンクのリライト方法を変更する。リライトを避けるには false を指定する。
初期値: true – $post_type をスラッグに使う
$args 配列
‘slug’ => 文字列 パーマリンク構造のスラッグを変更。デフォルトは $post_type の値。翻訳可能であること。
関数リファレンス/register post type – WordPress Codex 日本語版
$args['rewrite']['slug'] = 'my_post'; // 任意のSlug
rewriteは初期値でtrueになっていて、$post_typeをスラッグに使うことになっているので、配列内のslugの値に任意のslug名を指定してあげます。
本記事ではmy_post
としています。

コメント