P粉7258276862023-08-28 21:32:12
您可以通过以下两种方式来实现:
在后台设置中放置空值
转到WooCommerce > 设置 > 高级,然后在帐户端点输入框中,您可以删除特定端点的值并保存空值。
通过这种方式,您将不会在帐户页面上看到端点页面或菜单项,如果您访问该URL,您将在访问的URL上看到主页。
取消设置查询变量
您可以使用过滤器钩子取消设置查询变量。
https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L85
在第85
行,您可以找到具有所有查询变量的函数。
https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-query.php#L232
而在第232行,您可以找到获取查询变量的函数,它也具有过滤器。您可以使用过滤器并取消设置所需的端点。
如果您使用此方法,您还需要从导航菜单项中取消设置该项,您还需要重新保存固定链接设置。
然后,如果您访问该端点的URL,您将在访问的URL上看到主页。
在这两种情况下,您将不会看到404页面。
P粉2176290092023-08-28 15:42:08
答案是:是的,有!我的钩子写错了。我现在使用了wp钩子。这合法吗?
function redirect_forbidden_access(){ $current_endpoint = WC()->query->get_current_endpoint(); if($current_endpoint == "payment-methods" || $current_endpoint == "add-payment-method" || $current_endpoint == "edit-payment-method" || $current_endpoint == "[custom-endpoint]") { wp_redirect(wc_get_account_endpoint_url('dashboard')); } } add_action('wp', 'redirect_forbidden_access');
这就是解决方法。