WordPress Query Strings Obfuscator

Advanced Usage Documentation
Disable page caching settings (example, woocommerce geolocate with page caching); it adds v=<nonce> by default.
Follow best practices when creating html element attributes. This is not required BUT it is strongly recommended since most of the known issues result from disorganized attributes. This is especially true if style selectors exist for a class attribute (example, href should precede class and other attributes in anchors).
<a href="#" class="" name="" id="" title="" data-th="" data-attr=""></a>
Use appropriate hooks available in your favorite plugins/themes to resolve any redirect issues. Example, Woocommerce cart uses remove_item, undo_item & other keys to execute cart action requests. To resolve cart item actions issues, unhook the update_cart_action function of WC_Form_Handler class from wp_loaded action and hook into wp action instead. Woocommerce Subscriptions item actions such as suspend and cancel may have similar issues. Simply unhook maybe_change_users_subscription function of WCS_User_Change_Status_Handler class and rehook in actions as above.
The hooks and constants below are provided for advanced customizations if you prefer, for any reason, to:

filter_1

Skip Obfuscation for Queries with Specific Keys

Use fs_omit_obfusquer filter hook to add skipped keys.
add_filter('fs_omit_obfusquer', function($a){ $a[]='striA'; $a[]='striB'; $a[]='striC'; $a[]='striD'; return $a; });

filter_2

Skip Obfuscation for Specific Plugin Content

Use fs_plugit_obfusquer filter hook to add plugin/theme shortcodes whose content should skip obfuscation.
add_filter('fs_plugit_obfusquer', function($a){ $a[]='woocommerce_my_account'; return $a; });

filter_3

Obfuscate only Specific Domain Requests (*)

Use fs_restrict_obfusquer filter hook. This example obfuscates only the domain with the given tlds.
add_filter('fs_restrict_obfusquer', function(){ return '(.*)medomain\.(ca|co|co.uk|co.jp|com|net|org)+'; });

filter_4

Use a Custom Obfuscation Key & Secret

Define _LICENSE_K and _LICENSE_S constants in configuration file (wp-config.php), OR plugin main file (plugin-name.php), OR theme's functions.php.
define('_LICENSE_K', 'custom_key'); define('_LICENSE_S', 'custom_secret');

The fs_dump_obfusquer action hook
add_action('fs_dump_obfusquer', function($args){error_log( print_r( [ 'fs_dump_obfusquer' => $args ], TRUE ), 3, '/home/<your-path-to>/log_file');}); lets you log obfusquerified query strings to file for further observation.
This is useful for resolving HTTP 414 (Request URI Too Large) Errors. Simply observe the culprit key(s) and add any or all of those keys to skip obfuscation.

filter_5

Assign Obfusquerified Format to Custom Query Key (*)

Use _LICENSE_ constant define('_LICENSE_', true); to assign the currently obfusquerified string to the custom key. This new assignment will be obfuscated except you skip the custom key.
By default, the custom query key is assigned the last obfusquerified string if additional query strings append to that string (example, using add_query_arg() without its url parameter).
The fs_license_obfusquer filter hook add_filter('fs_license_obfusquer', function(){return 'key';}); sets the custom query key.

The obfusq_loaded action hook
add_action('obfusq_loaded', function(){}); is available to execute custom code immediately after Obfusquer is ready.
Note that you will very rarely need to use these features.

info

More on Custom Query Key & Obfusquerified Format

Define a custom handler method/function in your code to handle query contexts using the internal fs_context_obfusquer, fs_output_obfusquer and fs_request_obfusquer filters that handle urls pre-flight.

add_filter('fs_context_obfusquer', function($u,$q,$a){return $u;}); to get requested url.
add_filter('fs_output_obfusquer', function($q,$a){return $q;}); to get currently obfusquerified string, and add_filter('fs_request_obfusquer', function($a,$s,$o){return $a;}); to get plain query string (example, in url parameter contexts - /?key=0bfvsqu3r1f1eDQv86Y&<skipped-qskey>=<V1>&<other-qskey>=<V2>).
This is especially useful for asynchronous requests and external 3rd-Party api services integration.