Os seguintes 2 filtros permitem que você conecte quando o WordPress verifica o slug e são encontrados na função wp_unique_post_slug () no arquivo wp-includes / post.php.
Existem 2 filtros, um para mensagens hierárquicas e outro para não hierárquico. O filtro hierárquico fornece o ID para o pai da postagem, portanto, se o $ post_parent for 0, você sabe que essa é uma postagem "básica".
Os filtros também passam o $ post_type se você quiser adicionar tipos de postagem específicos à sua lógica.
Ao retornar "true", você está dizendo ao WordPress que este slug é ruim, então o WordPress adiciona um sufixo, assim como faria se você estivesse tentando um apelido / slug que já tenha sido usado.
add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
if ( !$post_parent && $slug == 'portfolio' )
return true;
return $is_bad_hierarchical_slug;
}
add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
if ( $slug == 'portfolio' )
return true;
return $is_bad_flat_slug;
}