You want WP_Rewrite::using_permalinks
.
<?php
add_action('init', 'wpse142273_add_rules');
function wpse142273_add_rules()
{
global $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
// Plan A
} else {
// Plan B
}
}
<?php
// inside a class somewhere
public static function url($area, $additional=null)
{
global $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$path = "/account/{$area}";
if ($additional) {
$path .= "https://wordpress.stackexchange.com/" . $additional;
}
if ("https://wordpress.stackexchange.com/" === $wp_rewrite->permalink_structure[count($wp_rewrite->permalink_structure) - 1]) {
$path = trailingslashit($path);
}
} else {
$q = array(
static::ACCOUNT_VAR => $area,
);
if ($additional) {
$q[static::ADDITIONAL_VAR] = $additional;
}
$path="?".http_build_query($q);
}
return apply_filters('frontend_accounts_url', home_url($path), $area, $additional);
}
Keep in mind that it’s a-okay to just blindly call add_rewrite_rule
when permalinks aren’t in use. You’ll need to add custom query variables anyway (by filtering query_vars
) so you plugin/theme can still work just fine without rewrites.