クライアントワークで必須、記事IDをスラッグにする

クライアントワークで必須の記事IDをスラッグにするプラグインと脱プラグイン方法

WordPress5.0にアップデートした直後に使えなかった気がして、プラグインを使わない方法に切り替えましたが、本エントリーのために再検証したら5.2.2現在普通に使えました・・・

プラグインを使う方法

クライアントワークで必須とも言えるプラグインSlugs or PostID紹介。
エントリー投稿時にスラッグ設定をしなかった場合、自動でエントリーIDをスラッグにしてくれて日本語URLになるのを避けれます。スラッグ設定した場合は、入力内容が優先されます。
プラグインを有効にして、パーマリンク設定で%postid%とすればOK!

他にも多数の類似プラグインがあります。

プラグインを使わない方法

WP5.0にした直後に、上記のプラグインが動かずクライアントサイト全てをこれから紹介するプラグインを使わない方法に切り替えました。

functions.phpに下記のコードを追記すれば解決です。
パーマリンク設定は、%postname%でOK!!
あとの動きはプラグインと同じく、スラッグ未入力時はエントリーIDが入り、入力時は指定スラッグになります。

function auto_postid_slug( $slug, $post_ID, $post_status, $post_type ) {
	if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
		$slug = utf8_uri_encode( 'post' ) . $post_ID;
	}
	return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_postid_slug', 10, 4  );

3行目のpostpost-とかentryに変更する事で、プラグインの場合と異なりIDの前後に任意の文字列を指定できます。