WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
WEB制作
[WordPress]カスタム投稿記事のパーマリンクをIDに変更する
function.phpから直接カスタム投稿を追加している場合
1.’rewrite’設定
arrayの中に’rewrite’ => という記述を探します。
function create_post_type() {
register_post_type(
'information',
array(
'label' => 'インフォメーション',
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail',
'author',
),
'rewrite' => array(
'with_front' => true,
),
)
);
‘with_front’ => true, のtrueの部分をfalseに変更します。
‘rewrite’ =>…がなければ追加します。
変更後は以下のようになります。
function create_post_type() {
register_post_type(
'information',
array(
'label' => 'インフォメーション',
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail',
'author',
),
'rewrite' => array(
'with_front' => false,
),
)
);
2.カスタム投稿を指定してパーマリンクを変更
これでパーマリンクの変更ができるようになったのでfonction.phpに以下のコードを追加します。
<?php
function information_post_type_link( $link, $post ){
if ( $post->post_type === 'information' ) {
return home_url( '/information/' . $post->ID );
} else {
return $link;
}
}
add_filter( 'post_type_link', 'information_post_type_link', 1, 2 );
function information_rewrite_rules_array( $rules ) {
$new_rewrite_rules = array(
'information/([0-9]+)/?$' => 'index.php?post_type=information&p=$matches[1]',
);
return $new_rewrite_rules + $rules;
}
add_filter( 'rewrite_rules_array', 'information_rewrite_rules_array' );
?>
informationの部分は変更したいカスタム投稿のpost_typeの値に合わせます。
記事詳細ページを開いてURLの最後がこのようになっていたら成功です。
https://example.jp/information/123/
プラグイン「Custom Post Type UI」からカスタム投稿を追加している場合
1.function.phpに移植
管理画面の「CPT UI」>「ツール」 > 「コードを取得」を開き、function.phpにコピー&ペーストします。
function cptui_register_my_cpts() {
〜
add_action( 'init', 'cptui_register_my_cpts' );
ペーストした中から次の1行を探します。
"rewrite" => [ "slug" => "※カスタム投稿post_id(環境によって異なる)", "with_front" => true ],
‘with_front’ => true, のtrueの部分をfalseに変更します。
ここから先は、function.phpから直接カスタム投稿を追加している場合と同じ作業を行います。
最後にURLが変わっていることを確認して完了です。