【WordPress】カスタム投稿のパーマリンクを実装する

カスタム投稿のパーマリンクだけが厄介でして、投稿以外トップページに飛ぶ現象に陥りました。
独自でカスタマイズしましたが、プラグインを使った方が楽です。

パーマリンクを「年/月/日/ID」にリライトします。

// カスタム投稿hogeリライトルール
add_action('init', 'post_hoge_rewrite');
function post_hoge_rewrite() {
add_rewrite_rule(
 '^hoge/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$',
 'index.php?post_type=hoge&year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&p=$matches[4]',
 'top'
);
}
add_filter( 'post_type_link', 'post_hoge_link', 10, 2 );
function post_hoge_link( $url, $post ) {
if ( 'hoge' === get_post_type( $post ) ) {
 $post_time = get_the_date( 'Y/m/d/', $post->ID );
 $post_custom = $post_time . $post->ID;
 $url = str_replace($post->post_name, $post_custom, $url);
}
return esc_url($url);
}

今回4つのパーマリンクが入るため、add_rewrite_ruleの中身も数を合わしておきます。
get_the_dateの最後にスラッシュを1つ追加しておきました。

チェックポイント

matchesは0からではなく1から始まる
year=$matches[1]
monthnum=$matches[2]
day=$matches[3]
p=$matches[4]

間違えないよう注意しましょう。

この記事を書いた人

ひがしのアバター ひがし フリーランス

制作会社で経験を得たあと、主にWEB制作の案件を請け負いながら活動する奈良県在住のフリーランス。
別の場所ではエストというHNで創作活動しながら、楽しく作ることを大事に技術習得やスキルアップをしています(・ω・*)

※「ひがし」はビジネス用のハンドルネームになります。本名はお客様や必要に応じてお伝えします。

目次