カスタム投稿のパーマリンクだけが厄介でして、投稿以外トップページに飛ぶ現象に陥りました。
独自でカスタマイズしましたが、プラグインを使った方が楽です。
パーマリンクを「年/月/日/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]
間違えないよう注意しましょう。