Loading...

  • Home iconHOME
  • Pen iconBLOG
  • Tag iconMAINT.
  • 【WordPress】カスタム投稿のパーマリンクを投稿IDに変更する

BLOG

【WordPress】カスタム投稿のパーマリンクを投稿IDに変更する

Tag iconMAINT. Clock icon Update icon

カスタム投稿のパーマリンクを投稿IDに変更する

WordPressで記事を作成すると、記事のURL(=パーマリンク)は記事タイトルなどから自動生成されます。

日本人の我々が書く記事なので、当然記事タイトルも日本語である場合がほとんどです。

日本語のパーマリンクのサイトを誰かに共有したりする際、日本語の部分が意味の分からない英数字の羅列に変換されるというデメリットがあります。

そのため、記事タイトルに合わせてパーマリンクを手動で編集し、設定し直すのが通常の方法ですが、
WebやSEOに詳しくない人でない限り、パーマリンクなんかに気を配りません。

  • クライアントがWebにあまり精通しておらず、パーマリンクの手動編集を行わなさそう
  • 毎回手動で編集するのが面倒なので、投稿IDが自動で設定されるようにしたい

このような方に向けて、カスタム投稿のパーマリンクが「https://サイトのURL/カスタム投稿名/投稿ID」という形式に自動でなるように設定する方法を解説します。

プラグインは使いません。

通常の投稿記事のパーマリンク設定

ちなみに、カスタム投稿ではなく通常の投稿であれば、WordPressの管理画面から「設定」→「パーマリンク」と進みパーマリンク設定を行うことが出来ます。

難しいコードを書く必要もありませんので、ググれば解説記事もたくさん出てきます。

カスタム投稿のパーマリンクを投稿IDに変更する方法

カスタム投稿のパーマリンクを変更する

functions.phpに以下を記述します。

add_filter('post_type_link', 'custom_post_link', 1, 2);
function custom_post_link($link, $post) {
  if($post -> post_type === 'news') {
    // カスタム投稿名が"news"の投稿のパーマリンクを「/news/投稿ID/」の形に書き換え
    return home_url('/news/'.$post->ID);
  } else {
    return $link;
  }
}

//書き換えたパーマリンクに対応したリライトルールを追加
add_filter('rewrite_rules_array', 'custom_post_link_rewrite');
function custom_post_link_rewrite($rules) {
  $rewrite_rules = array(
    'news/([0-9]+)/?$' => 'index.php?post_type=news&p=$matches[1]',
  );
  return $rewrite_rules + $rules;
}

カスタム投稿名にあたる“news”は、ご自身のカスタム投稿名に合わせて変更してください。

カスタム投稿のパーマリンクの変更を反映させる

WordPressの管理画面から、「設定」→「パーマリンク」と進み、
「パーマリンク構造」の設定を「基本」以外のいずれかに設定して変更を保存します

Permalink Setting to reflect the change of custom post permalink

細かい説明は省きますが、functions.phpに加えた内容を正しく反映させるために必要な作業です。

おわりに

基本的にWebサイトの制作を依頼する方々は、Webに関する知識の面では素人です。

投稿記事編集画面でのパーマリンクの編集方法をいくら教えても、日本語タイトルがそのままパーマリンクになった記事を書かれます。

そのため、Webに関してプロである我々が、その点を配慮したWordPressサイトを開発するべきです。

今回の設定では、ただ投稿IDをパーマリンクに設定しているだけですが、日本語タイトルの記事よりは良いかと思います。