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が変わっていることを確認して完了です。