You've already forked wc-licensed-product
Fix licenses endpoint 404 error in customer account
- Register licenses query var with WooCommerce via woocommerce_get_query_vars - Register endpoint in Installer before flushing rewrite rules - Existing installations need to re-save permalinks The endpoint was not being recognized because WooCommerce's My Account requires both add_rewrite_endpoint() and query var registration. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
15
CLAUDE.md
15
CLAUDE.md
@@ -553,3 +553,18 @@ Full API documentation available in `openapi.json` (OpenAPI 3.1 specification).
|
|||||||
- Domain validation with normalization (strips protocol, www prefix)
|
- Domain validation with normalization (strips protocol, www prefix)
|
||||||
- Inline edit UI with save/cancel for license domains
|
- Inline edit UI with save/cancel for license domains
|
||||||
- Links to full licenses management page for advanced actions
|
- Links to full licenses management page for advanced actions
|
||||||
|
|
||||||
|
**Bug fix (post v0.0.10):**
|
||||||
|
|
||||||
|
- Fixed: Licenses menu item in customer account page resulted in 404 error
|
||||||
|
|
||||||
|
**Root cause:**
|
||||||
|
|
||||||
|
- WooCommerce My Account endpoints require both `add_rewrite_endpoint()` AND registration with `woocommerce_get_query_vars` filter
|
||||||
|
- The endpoint also needs to be registered before rewrite rules are flushed during activation
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
|
||||||
|
- Added `addLicensesQueryVar()` method to register the endpoint query var with WooCommerce
|
||||||
|
- Updated Installer to register endpoint before flushing rewrite rules on activation
|
||||||
|
- Existing installations may need to visit Settings > Permalinks and click Save to regenerate rewrite rules
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ final class AccountController
|
|||||||
// Add licenses endpoint
|
// Add licenses endpoint
|
||||||
add_action('init', [$this, 'addLicensesEndpoint']);
|
add_action('init', [$this, 'addLicensesEndpoint']);
|
||||||
|
|
||||||
|
// Register endpoint query var with WooCommerce
|
||||||
|
add_filter('woocommerce_get_query_vars', [$this, 'addLicensesQueryVar']);
|
||||||
|
|
||||||
// Add licenses menu item
|
// Add licenses menu item
|
||||||
add_filter('woocommerce_account_menu_items', [$this, 'addLicensesMenuItem']);
|
add_filter('woocommerce_account_menu_items', [$this, 'addLicensesMenuItem']);
|
||||||
|
|
||||||
@@ -65,6 +68,15 @@ final class AccountController
|
|||||||
add_rewrite_endpoint('licenses', EP_ROOT | EP_PAGES);
|
add_rewrite_endpoint('licenses', EP_ROOT | EP_PAGES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register licenses query var with WooCommerce
|
||||||
|
*/
|
||||||
|
public function addLicensesQueryVar(array $vars): array
|
||||||
|
{
|
||||||
|
$vars['licenses'] = 'licenses';
|
||||||
|
return $vars;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add licenses menu item to My Account navigation
|
* Add licenses menu item to My Account navigation
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -35,7 +35,10 @@ final class Installer
|
|||||||
// Set version in options
|
// Set version in options
|
||||||
update_option('wc_licensed_product_version', WC_LICENSED_PRODUCT_VERSION);
|
update_option('wc_licensed_product_version', WC_LICENSED_PRODUCT_VERSION);
|
||||||
|
|
||||||
// Flush rewrite rules for REST API
|
// Register the licenses endpoint before flushing rewrite rules
|
||||||
|
add_rewrite_endpoint('licenses', EP_ROOT | EP_PAGES);
|
||||||
|
|
||||||
|
// Flush rewrite rules for REST API and My Account endpoints
|
||||||
flush_rewrite_rules();
|
flush_rewrite_rules();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user