Your rewrite rules are good, but the redirect happens because WordPress applies canonical redirect via its redirect_canonical()
function which is hooked to template_redirect
.
And you can cancel the redirect via the parse_request
action, like so, where we check if the matched rewrite rule is the one you set when you call add_rewrite_rule()
and if it is, then cancel the redirect by “unhooking” redirect_canonical()
from the template_redirect
action:
add_action( 'parse_request', function( $wp ){
if ( 'for-sale\/([a-z-]+)\/([0-9])+\/?$' === $wp->matched_rule ) {
remove_action( 'template_redirect', 'redirect_canonical' );
}
} );
Related Posts:
- How to create custom URL routes?
- How do you create a “virtual” page in WordPress
- Change the “page” slug in pagination
- Understanding add_rewrite_rule
- web.config conflict on IIS
- Rewrite rules not working in WordPress
- Dynamic Endpoints
- How to add custom rewrite rule to .htaccess?
- How do I remove a rewrite rule?
- Problem with add_rewrite_rule and pagination (paged and page query_vars)
- generate_rewrite_rules (action) vs add_rewrite_rule (function): which one is preferred?
- add_rewrite_rule: $matches var not replaced by captured value
- How-to add rewrite rules to point the uploads folder to a subdomain
- Rewrite Rules for Multiple (more than 2) Taxonomies
- add_rewrite_rule not loading correct page nor getting variables
- Preserving $_GET parameter while using custom Rewrite Rule
- How to change default page slug?
- Disable wordpress pagination URL rewrite for specific page
- How to use Post Custom Metadata in Post Titles and Post Permalinks
- Rewrite url for custom post type
- add_query_vars and add_rewrite_rules
- rewrite_rule() not preserving the query string
- Need help with rewrite_rules_array
- SEO Friendly URLs for my plugin categories
- How do I add a add_rewrite_rule without it redirecting?
- Taxonomy rewrite question
- Mod_rewrite delete parameter in 301 Redirect
- add_rewrite_rule not working for page var
- Why does wordpress still strip my query var?
- When to call `add_rewrite_rule` for safety
- WordPress URL rewrite regex
- Custom rewrite rules are sending everything to index.php
- Getting add_rewrite_rule and add_rewrite_tag to work
- Blog installed in subdirectory but need to create pages in root. How to use permalinks?
- WordPress Network on IIS7/SQL Server – Rewrite Issues
- Custom comments
- Rewrite rules goes away
- Rewrite Rule for Custom Page with Query Vars in URL
- WordPress keeps writing rewrite rules to .htaccess
- Adding the amp url prefix to the beginning
- WordPress Rewrite
- add_rewrite_rule again
- Dynamic URL, not a physical page within the database
- Rewrite Rule for Post “Subpage”, with pagination
- Need to make a php file inside theme accessible via url
- Tricky URL rewrite with custom values in url
- WP Rewrite the last two parts of the URL
- Rewrite loading custom template file but is_home() returns true, and there’s no 404
- Rewrite rule for admin-ajax.php
- Add rewrite rule to call front-page.php?
- Nginx rewrite rule conflict with WordPress permalinks rule
- Add a query string to ALL links on site
- How make a multi language routes, with rewrite rules or rewrite endpoints?
- Evaluating a external rewrite rule before internal wordpress rewrite rule
- Add rewrite rule for rewrite endpoint
- Custom rewrite rule for backend/admin?
- Access $_POST data after redirect
- How to have multiple rewrite endpoints in the same URL?
- Rewriting rules: difference between ‘init’, ‘rewrite_rules_array’, ‘generate_rewrite_rules’?
- Change Query String to pretty permalink
- add_rewrite_rule is not taking effect in WordPress? .htaccess file doesn’t update
- WordPress rewrite rules for state and city
- Multiple Permalinks for Same Post
- add_rewrite_rule not working for language specific characters
- How to add a custom redirect rule for subdomains?
- Custom rewrite rule
- Regionalised Content
- Single Redirection Rule for Pages and Archive links
- How to do Basic URL Rewrite Without Redirecting
- Is it possible to remove feeds from rewrites?
- Add specific word to default page permalink
- URL Rewrite doesn’t work for nested pages
- Flush Rewrite Rules on init or rest_api_init?
- Plugin action rewrite rule – non_wp_rules
- Remove “/page/1” from the URL
- hard flush_rewrite_rules() not regenerating .htaccess
- Map alt domain to specific section of website w/o MU
- Rewrite URL – insert custom variables as a directory path
- Rewriting URLs in WordPress
- add_rewrite_rule() to route to file other than index.php
- How to properly rewrite url by custom var
- Rewrite rule to load images from production does nothing
- Custom query_vars and parse_request on wp-admin
- ‘rewrite_rules_array’ or ‘generate_rewrite_rules’ for adding custom rewrite rules?
- Rewrite Rules Are Redirecting and Not Passing VARs
- Can’t add external rewrites
- WordPress rewrite rules don’t need ^?
- Have two different URLs show the homepage
- url rewrite parsing a custom url parameter not working
- How to add custom variable in url without redirect?
- Using category slug in add_rewrite rule
- custom template rewrite
- Custom rewrite not working
- add_rewrite_rule ignoring other params than the “p” param
- Url Rewriting a dynamic wordpress page
- How to catch Rewrite rules then display a specific post?
- My WP_options db rewrite_rules Does Not Work
- Disable Pagination on Pages
- Adding two rewrite rules
- Load an url with minimal/no DB queries