【WordPress】記事のスラッグをID番号で自動生成する方法

2019年10月28日 更新:2022年01月11日 WordPress

記事のスラッグをID番号で自動生成する方法

ポータルサイトやニュースサイトなど、記事を大量に投稿するサイトでは、スラッグを毎回英語で編集するのはとても面倒です。日本語の記事タイトルをそのまま保存すると、スラッグも日本語になってしまうため、パーマリンクの設定によっては、文字化けのような長いURLになってしまうことがあります。

そこで今回は、スラッグが重複しないように記事のID番号を自動的にスラッグとして割り当てる方法をご紹介します。(カスタム投稿タイプにも対応)

ワードプレスで作成した記事のスラッグを投稿IDの番号で自動生成するには、functions.php に次のように記述します。

/* 投稿記事のスラッグをID番号で採番 */
function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
  if ( $post_type == 'post' ) {
    $slug = $post_ID;
  }
  return $slug;
}
add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );

これでスラッグが自動的にID番号で採番されるようになります。

スラッグが数字だけの場合、他のスラッグと重複が起きる可能性がないとは言えないので、先ほどのコードを少し編集して「投稿タイプ+ID」の形でスラッグが生成されるようにカスタマイズします。

スラッグを「post-123」の形で自動採番されるようにするには、次のようにfunctions.php に記述すればOKです。

/* 投稿記事のスラッグを「post-ID」で採番 */
function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
  if ( $post_type == 'post' ) {
    $slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
  }
  return $slug;
}
add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );

先頭の「post」を投稿タイプ以外の文字列、例えば「blog」にして「blog+ID」の形式で採番することもできます。その場合は「utf8_uri_encode( $post_type )」の部分を編集して「utf8_uri_encode( ‘blog’ )」に書き換えればOKです。

/* 投稿記事のスラッグを「blog-ID」で採番 */
function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
  if ( $post_type == 'post' ) {
    $slug = utf8_uri_encode( 'blog' ) . '-' . $post_ID;
  }
  return $slug;
}
add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );

最後にカスタム投稿タイプで作成した記事のスラッグを「カスタム投稿タイプ+ID」の形で自動生成する方法を記載します。例えばカスタム投稿タイプが「news」の場合は、次のように記述すれば「news-ID」の形でスラッグを生成します。

/* カスタム投稿タイプのスラッグを「{カスタム投稿タイプ}-ID」で採番 */
function custom_auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
  if( $post_type == 'news' ) {
    $slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
  }
  return $slug;
}
add_filter( 'wp_unique_post_slug', 'custom_auto_post_slug', 10, 4 );

これで「news-123」の形でスラッグが採番されるようになりました。

いかがでしたか?スラッグが正しく自動生成されましたか?
記事ページのスラッグは、表示オプションの「スラッグ」にチェックを入れれば、確認することができますので、正しく表示されているか確認してみてください。

新規に記事を作成すると今回設定したスラッグが採番されるようになりますが、古い記事については「更新」ボタンをクリックしない限り、今回設定したスラッグには変更されませんので注意してください。