WordPressの投稿を/news/等1階層下げたいとき(カスタム投稿には付けない)
2021.05.12
WordPressでコーポレートサイトなどを制作する際に、/news/や/blog/などと1階層下げたいことがよくある。そのときに対応する手順をメモしておく。
やりたいこと
通常WordPressではブログやニュースサイトを制作するものなので、/blog/や/news/はカテゴリーなどで指定するか、固定ページでの対応となる。が、諸々のWeb制作では表題通り1階層下げたいときのほうが多い
通常の投稿を 〜〜〜〜.com/news/xxxx/ みたいなURLにしたい。
対応手順
1.固定ページの作成
フロントページ
frontpageと名前をつけ、テーマ内にfrontpage.phpを作成し、その中にトップページの内容を記載していく
投稿ページ
newsと名前をつけ、home.phpがnewsの表示先になるので、そちらを編集。
page-news.phpではないので、気をつける。
2.表示設定の変更
設定→表示設定
ホームページの表示の部分で、ホームページと投稿ページを指定する
*パーマリンクの設定
本来であればここで、パーマリンクの設定に、URL /news/
/%post_id%/
と設定すると完了なのだけど、パーマリンク設定で、newsをつけてしまうと、全体的に/news/が挟み込まれたURLになってしまい、カスタム投稿などを作成した際にURLが気持ち悪くなる。
なので、 functions.phpで/news/
のときだけ挟み込むように対応する。
3.functions.php
/newsにしたらnews、/blogならblogなどと適宜変更。
function add_article_post_permalink( $permalink ) {
$permalink = '/news' . $permalink;
return $permalink;
}
add_filter( 'pre_post_link', 'add_article_post_permalink' );
function add_article_post_rewrite_rules( $post_rewrite ) {
$return_rule = array();
foreach ( $post_rewrite as $regex => $rewrite ) {
$return_rule['news/' . $regex] = $rewrite;
}
return $return_rule;
}
add_filter( 'post_rewrite_rules', 'add_article_post_rewrite_rules' );
Comment