WEB制作オフィス・MIT > WEBサイト制作備忘録 > カスタム投稿の記事もパーマリンク設定が反映されるようにする

カスタム投稿の記事もパーマリンク設定が反映されるようにする2012年12月5日

通常、カスタム投稿の記事はパーマリンクの設定をしても反映されない。

functions.phpへ以下のコードを書き込む事で反映されるようになる。

反映されるというより、カスタム投稿ごとに直接設定してしまう感じ。

// --------------------------------------------------
// 下記の関数の中にカスタム投稿の数だけ書き込む
function myposttype_rewrite() {
    global $wp_rewrite;
  
  // -----------カスタム投稿(制作実績)の設定
    $queryarg = 'post_type=portfolio&p=';
    $wp_rewrite->add_rewrite_tag('%portfolio_id%', '([^/]+)',$queryarg);
    $wp_rewrite->add_permastruct('portfolio', '/portfolio/%portfolio_id%.html', false);  
  // -----------カスタム投稿(お知らせ)の設定
    $queryarg = 'post_type=info&p=';
    $wp_rewrite->add_rewrite_tag('%info_id%', '([^/]+)',$queryarg);
    $wp_rewrite->add_permastruct('info', '/info/%info_id%.html', false);
 // ----------------------------------------------------------------------
}
// 下記コードはそのままコピペ
function myposttype_permalink($post_link, $id = 0, $leavename) {
    global $wp_rewrite;
    $post = &get_post($id);
    if ( is_wp_error( $post ) )
        return $post;
    $newlink = $wp_rewrite->get_extra_permastruct($post->post_type);
    $newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
// ---------カスタム投稿(パーマリンクが反映されるようにする)
add_action('init', 'myposttype_rewrite');
add_filter('post_type_link', 'myposttype_permalink', 1, 3);
// コピペ ここまで-------------------------------------------------