functions.phpでカスタム投稿タイプのパーマリンクを任意のURLに変更する方法【WordPress】

最終更新日:

公開日:2025-02-07

ページ内に広告が含まれています。
functions.phpでカスタム投稿タイプのパーマリンクを任意のURLに変更する方法【WordPress】

WordPressを導入した際に、必ず最初にしておきたいのがパーマリンク設定です。
途中から変更すると、記事のURLが変更になってしまいそれまでのSEO評価を失ってしまう事になります。そのため、最初に一度運用していく記事のURLの形式を決める事が重要です

先日、カスタム投稿タイプのパーマリンクを任意のURLに設定出来る「Custom Post Type Permalinks」の使い方【WordPress】でプラグインを仕様したカスタム投稿タイプのパーマリンクの変更方法について解説しましたが、今回はfunctions.phpでプラグインを使わず変更する方法を解説していきます。

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

カスタム投稿タイプのパーマリンクを変更する理由は、自身で運営・管理して記事のスラッグを適宜変更している場合は大丈夫ですが、一般のユーザーは記事のスラッグを気にせず日本語のまま投稿します。
そのままでは日本語URLは英数字等にエンコードされてとても長いURL
になります。SEO的には問題無いとされてはいますが、ユーザーの視認性も下がり扱いにくいものになってしまいます。

後から記事のスラッグを変更すると、検索エンジンにインデックスされているURLが変わってしまいますのでSEO的にも評価が下がってしまったりと悪影響となります。
そこで、今回はあらかじめ記事のスラッグを記事IDに変更するようにしていきたいと思います。

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

カスタム投稿タイプのパーマリンクを変更する方法としてfunctions.phpを使用します。今回はプラグインは使用しませんので、難しいと感じる場合は、先日解説した、カスタム投稿タイプのパーマリンクを任意のURLに設定出来る「Custom Post Type Permalinks」の使い方【WordPress】をご覧ください。

以下の内容がfunctions.phpを使用してカスタム投稿タイプのパーマリンクをIDに変更するために必要な内容となります。

rewriteオプションで’with_front’ => falseにする

まずは、カスタム投稿タイプを定義するregister_post_typerewriteオプションで‘with_front’ => falseにする事を忘れないようにしてください。

'rewrite' => array( 'with_front' => false ),

これは、パーマリンク設定でカスタム構造を選択していて追加でディレクトリ構造等を組み込んでいる場合に、そのディレクトリ構造を引き継いでしまうためとなります。

パーマリンクをIDに変更する

続いてパーマリンクの末尾をIDに変更するための記述となります。

function custom_post_type_link($link, $post) {
	if($post -> post_type === 'news') {
		return home_url('/news/'.$post->ID);
	} else {
		return $link;
	}
}
add_filter('post_type_link', 'custom_post_type_link', 1, 2);

上記の記述でカスタム投稿タイプのスラッグが「news」のパーマリンクを「news/投稿ID」の形に書き換えています。
news」の部分はお使いの環境によって適宜書き換えてください。

書き換えたパーマリンクに対応したリライトルールを追加する

次に、書き換えたパーマリンクに対応したリライトルールを記述する事で、アーカイブや記事ページの表示を正常に出来るようにします。

function custom_rewrite_rules_array($rules) {
	$rewrite_rules = array(
		'news/([0-9]+)/?$' => 'index.php?post_type=news&p=$matches[1]',
	);
	return $rewrite_rules + $rules;
}
add_filter('rewrite_rules_array', 'custom_rewrite_rules_array');

news」の部分はお使いの環境によって適宜書き換えてください。

パーマリンクの変更を反映させる

最後に、Wordpress管理画面メニューの「設定」→「パーマリンク」から、「パーマリンク構造」の項目を「基本」以外を選択し保存してください。
すでに「基本」以外を選択している場合でも必ず一度保存してください。

以上がカスタム投稿タイプのパーマリンクを変更する方法となります。

さいごに

いかがでしたでしょうか。
今回は、functions.phpでカスタム投稿タイプのパーマリンクを任意のURLに変更する方法を解説しました。
プラグインが増えるとサイトが重くなり脆弱性の問題もありますので、出来ればfunctions.phpで変更する事が望ましいですが出来ない場合は無理せず、カスタム投稿タイプのパーマリンクを任意のURLに設定出来る「Custom Post Type Permalinks」の使い方【WordPress】で解説しているプラグインでの対応をしてみて下さい。

おすすめ記事

当ブログ運営者 ヒデ

北海道札幌市在住のフリーランスでWeb制作を行っているヒデです。Webコーディング(HTML・CSS・JSなど)やWordpressのカスタマイズ等のテクニック、困った時に確認できる分かりやすい解説を目標にして情報を発信していければと思っています。プロフィールはこちら

当サイトに関するご意見・ご感想・ご要望または仕事のご依頼は以下のフォームよりお願い致します。

お問い合わせ お仕事のご依頼

各SNSのフォローはこちらから

PAGE TOP