URL

スラッグ(投稿名)を自動的に日付にするカスタマイズ

よくある日付を使った投稿だと下記の様な形になります

https://tips.back2nature.jp/2021/08/19/sample-post/

これでは無く投稿名(↑だとsample-post)を日付にする方法です。

https://tips.back2nature.jp/20210819/

こんな感じのURLになります。

パーマリンクには%postname%が必須となります。

パーマリンク設定

とか

こんな感じの設定になります。

下記コードを環境に合わせてお使いのテーマのfunctions.phpなどに追加します。

function b2n_replace_slug( $slug, $post_ID, $post_status, $post_type ){

	if($post_type !== 'post'){
		return $slug;
	}

	$get_post = get_post($post_ID);
	if( !empty($get_post->post_name) ){
		return $slug;
	}

	$date_slug = date("Ymd");
	$post_id = get_page_by_path($date_slug, "OBJECT", "post");

	if( $post_id !== null ){
		$i = 1;
		while( $post_id !== null ){
			++$i;
			$post_id = get_page_by_path($date_slug.'-'.$i, "OBJECT", "post");
		}
		$date_slug = $date_slug.'-'.$i;
	}

	return $date_slug;

}
add_filter( 'wp_unique_post_slug', 'b2n_replace_slug' , 10, 4 );

上記コードを使う事で新規作成した投稿は下記の様な投稿名に自動的に変更となります。

パーマリンク設定

同日の投稿が複数あった場合は「-」ハイフンを挟んで連番を付与していきます。

投稿後にスラッグの変更も可能です。

上記コードは投稿のみが対象となります。
固定ページなどは対象外です。

やーまん
  • WordPressでテーマやプラグインの開発をしています。
    開発中に使用したHow toを中心に書き残していきます。

WordPress

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です