投稿IDをスラッグに


パーマリンクを投稿名に設定し、スラッグが空欄のときにはIDを入れるというSlug or PostID というプラグインがあって、便利だったのだが、長く更新されていないので、同様のことをする方法を考えてみた。
サイトのリニューアル時など、基本的にパーマリンクは投稿IDで良いのだが、特定の投稿だけ元のURLを変えたくないなどの事情がある場合用。

1.パーマリンクはpostname
2.acfでスラッグ欄を作り、デフォルト値を投稿IDにする
3.スラッグ欄の値を投稿スラッグに設定する

add_filter('acf/load_field/name=slug', function($field) {
    global $post;
    
    if( get_post_meta($post->ID, 'slug', true) == '' ) {
        $field['value'] = $post->ID;
    }
    return $field;
});

function custom_post_title( $value, $post_id, $field  )
{
$type = get_post_type($post->ID);
if ( 'post' == $type) {
		if(isset($value) && $value != '') {
			 $args = array(
				 'ID'           => $post_id,
				 'post_name' => sanitize_title($value)
			 );
			 wp_update_post( $args );
		}
    return $value;
} }
add_filter('acf/update_value/name=slug', 'custom_post_title', 10, 3);

デフォルト値の設定はhttps://gist.github.com/vielhuber/1124e0309bb4d655bfc08e1d38ad5bdeから

その他のAdvanced Custom Fields に関する記事一覧