当WordPress检查slug时,您可以使用以下2个过滤器,并且可以在wp includes/post中的函数wp\\u unique\\u post\\u slug()中找到这些过滤器。php文件。
有两个过滤器,一个用于分级帖子,另一个用于非分级帖子。层次过滤器为帖子父级提供ID,因此如果$post\\u父级为0,您就知道这是一篇“基本”帖子。
如果要将特定的post类型添加到逻辑中,过滤器也会传递$post\\u类型。
通过返回“true”,您就告诉WordPress这个slug不好,所以WordPress会添加一个后缀,就像您试图向我们提供一个已经被使用的帖子名/slug一样。
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;
}