I have a plugin where I need to reserve some slugs so I am using the filters wp_unique_post_slug_is_bad_flat_slug and wp_unique_post_slug_is_bad_hierarchical_slug. I apply them like this on my plugin code:

if ( is_admin() ) {
    add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'is_bad_hierarchical_slug', 10, 4 );
    add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'is_bad_flat_slug', 10, 3 );

Is using is_admin() correct? Or should I check for other user roles or just not check for anything and just apply them always?


Actually you should skip the condition altogether - you don't need to worry about permissions or context here, you are merely saying:

If WordPress, for whatever reason, is determining if a slug is bad: run my additional conditions

Currently, if a theme/front-end plugin/REST API call was triggering the filter (i.e. insert/updating a post), your checks aren't going to run (is_admin() is false) - just always attach the filter and let WordPress take care of the rest.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.