[WordPress]カスタム投稿タイプの記事の拡張子をhtmlに変更する。

[WordPress]カスタム投稿タイプの記事の拡張子をhtmlに変更する。

2015年09月25日 /最終更新:2017年08月17日

WordPressのカスタム投稿タイプの記事の拡張子をhtmlに変更する方法です。

[WordPress]カスタム投稿タイプの記事の拡張子をhtmlに変更する。

カスタム投稿タイプの記事では投稿名が表示され拡張子がない状態がデフォルトですが、記事の拡張子に「html」を使用したい場合には以下のコードで対応できます。

functions.php

add_action('init', 'myposttype_news_rewrite');
function myposttype_news_rewrite() {
  global $wp_rewrite;

  $queryarg = 'post_type=news&p=';
  $wp_rewrite->add_rewrite_tag('%news_id%', '([^/]+)',$queryarg);
  $wp_rewrite->add_permastruct('news', '/news/%news_id%.html', false);

}
add_filter('post_type_link', 'myposttype_news_permalink', 1, 3);
function myposttype_news_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;
}

以上をfunctions.phpにペースト。

参考:https://memocarilog.info/wordpress/theme-custom/3909