WordPressの投稿を/news/等1階層下げたいとき(カスタム投稿には付けない)

2021.05.12

| Web・ガジェット

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' );

4.OK

たぶん完成

Comment

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。