注销后 WooCommerce 重定向 [终极指南]
已发表: 2022-01-10可以使用本文中的代码创建注销后的 WooCommerce 重定向,以在他们注销后将 WooCommerce 客户重定向到特定页面或帖子或外部 URL。 在本文中,我想演示如何使用代码创建此重定向。 如果您错过了我之前的教程,我说明了如何创建 WooCommerce 注销页面短代码,这可能是您在创建 WooCommerce 注销重定向之前开始的好地方。
有一些插件可用于创建 WooCommerce 注销重定向,但它们不如应有的好; 我正在研究一个更好的解决方案,它将帮助您在注销后管理 WooCommerce 重定向,就像我为 WooCommerce Logout After Checkout 创建的插件一样。
如果您想成为早期采用者,请与我联系,以便我可以将您添加到列表中,因为该插件将从今天起 2 周内准备就绪。
在这篇文章中,我想分享可用于创建高效 WooCommerce 注销重定向的代码方法,但该插件将有几个条件选项来扩展默认重定向选项,就像我在 WooCommerce 结帐后重定向插件中完成的那样。
WooCommerce 注销重定向部分 - 跳过并跳到部分
在我的大多数客户项目中,我很难让注销重定向在 WooCommerce 网站上工作。 出于这个原因,我决定把这个在注销后创建 WooCommerce 重定向的终极指南放在一起。
我希望它可以成为精通技术和不精通技术的用户找到为他们的项目创建最佳 WooCommerce 注销重定向选项的解决方案的好地方。
由于这不是一篇普通的博客文章,它很长,可能需要更多时间来阅读和理解每一个细节。 我想帮助您浏览不同的部分,以便您可以快速选择项目所需的解决方案。
目录
- 主页重定向 - 注销后重定向到 Woocommerce 中的主页
- 当前页面重定向 – Woocommerce 注销按钮并重定向到当前页面
- 按 ID 重定向的特定页面 – Woocommerce 注销重定向页面
- 客户角色重定向 – Woocommerce 客户注销重定向
- 上一页重定向- Woocommerce登录重定向到上一页
- 我的帐户页面重定向 – Woocommerce 我的帐户注销重定向
- 外部 URL 重定向 – Woocommerce 注销重定向功能 Php Snippet
- 修复注销重定向错误 – Woocommerce 注销重定向不起作用
- WP 注销重定向 URL – Woocommerce 注销 URL
- Woocommerce 注销重定向插件
- 在 WordPress 中创建注销重定向 - 核心功能
- WooCommerce 登录重定向:woocommerce_login_redirect 挂钩
- WordPress 登出功能 – wp_logout_url()
- WordPress 过滤器挂钩 logout_redirect
- WordPress 过滤器挂钩 login_redirect
- 注销后的 WooCommerce 多站点重定向
- 过滤器挂钩:allowed_redirect_hosts
- WordPress重定向功能:wp_重定向
- WordPress 重定向功能:wp_safe_redirect()
- 结论
注销后的 WooCommerce 重定向
默认情况下,WooCommerce 在注销、注册和登录后会将用户重定向到“我的帐户”。 这种行为是不可取的,尤其是在旨在增加销售额的网站上。
您的 WooCommerce 网站上三个最常见的用户管理操作包括:
- 用户注册
- 用户登录
- 用户注册
- 用户资料编辑
- 用户注销
这些操作中的每一个都可以改进,不仅使用户更容易顺利导航,而且还增加了新客户和现有客户的销售前景。 Woocommerce 注销 URL 或链接默认位于“我的帐户”页面上,大多数 WooCommerce 商店所有者希望更改“我的帐户”页面上的注销重定向以重定向到特定页面或 WooCommerce 销售渠道。
如何从我的帐户页面重定向注销?
关于 WooCommerce 注销的最常见问题之一是如何从“我的帐户”页面创建自动注销并重定向到另一个网站或内部页面。
这是本文将要解决和解决的问题,在本教程结束时,您应该轻松地创建自定义 WooCommerce 注销重定向,即使之前的编码知识很少或没有。
为什么要创建 WooCommerce 注销重定向
一个好的电子商务网站应该利用所有机会将用户重定向到可以在每次操作后增加销售额和转化率的页面——登录、注销、购物车、结帐、注册等。
它是关于创建一个好的 WooCommerce 销售漏斗来促进其他产品交叉销售、降价销售和其他相关产品或畅销产品。
WooCommerce 注销重定向允许您通过在注销后将客户重定向到销售登录页面或战略 WooCommerce 漏斗重定向页面来提高销售转化率 - 而不是将客户重定向到默认的“我的帐户”页面。
本教程将向您展示如何在注销后更改 WooCommerce 重定向的默认设置,并将用户重定向到自定义 URL,例如“销售渠道”、“特价商品”、“目录”、上一页、特殊登录页面或任何外部链接适用于增加销售额和转化率。
在这篇文章中,我将与您分享一个关于如何在 WooCommerce 注销后创建自定义重定向的快速提示,就像我之前分享的如何在结帐后创建 WooCommerce 重定向一样。 理想情况下,默认的 WooCommerce 注销并不像应有的那样顺利。 它显示了一条对许多用户来说令人讨厌的确认消息。
我之前讨论了如何删除 WooCommerce 注销确认消息,这使您的客户可以更轻松地自动注销您的 WooCommerce 网站而不会弹出确认消息。
我还分享了您可以在本教程中扩展的 WooCommerce 注销代码片段,以通过添加重定向选项来提高效率,就像我在具有条件重定向选项的结帐后重定向插件中所做的一样。
更改 WooCommerce 注销重定向
更改 WooCommerce 注销重定向是您应该考虑的客户注销体验的另一个重要改进,就像我说明了如何将 WooCommerce 注销链接添加到菜单一样。
因此,现在让我们深入研究创建最佳 WooCommerce 注销重定向选项,您可以立即在商店中实施该选项以改善用户体验。
这个选项很简单,因为我们需要使用过滤器来检查注销事件发生时。
当 WooCommerce 注销发生时,我们可以挂钩此挂钩 - woocommerce_login_redirect
然后将带有重定向逻辑的回调函数传递到我们要在注销后重定向用户的页面。
如果您不熟悉 WooCommerce 或 WordPress 操作钩子和过滤器钩子,那么本关于 apply_filters 和 do_action 钩子的教程可能是开始习惯过滤器和钩子的好地方。
在开始创建 WooCommerce 注销重定向功能之前始终是一个好习惯,您应该检查用户是否已登录。现在让我们概述可用于创建 WooCommerce 注销重定向的各种选项。
这些函数中的每一个都使用默认的 WooCommerce 和 WordPress 操作挂钩和函数,这些函数将在本教程的其他部分中详细讨论。
主页重定向 - 注销后重定向到 Woocommerce 中的主页
注销后最常见的 WooCommerce 重定向之一是主页。 默认情况下,WooCommerce 在注销完成后重定向到我的帐户页面。
如果您希望将用户重定向到主页,您应该考虑将此代码添加到活动 WooCommerce 主题的 functions.php 文件中。
只需将此代码复制到您的主题 functions.php 文件中并测试以查看 WooCommerce 用户在注销后是否被重定向到主页。
注销后重定向到主页片段
您还可以将此代码段添加到插件文件中,它将无缝运行。
add_action('wp_logout','njengah_homepage_logout_redirect'); 功能 njengah_homepage_logout_redirect(){ wp_redirect(home_url()); 出口; }
重定向代码的工作原理
此代码中使用了两个函数和一个动作挂钩,用于在注销后创建 WooCommerce 重定向,如上面的代码所示。 让我们仔细看看这些函数和钩子的作用:
钩子:wp_logout
这段代码使用了 wp_logout 动作钩子,这篇文章在 – WordPress 钩子 – wp_logout 部分下已经详细讨论过了。 理想情况下,这是一个默认的 WordPress 注销钩子,在执行注销后触发。
功能:wp_redirect()
在这种情况下,如果您查看回调函数,如果使用wp_redirect()
函数,该函数也在 wp_redirect WordPress 函数部分中进行了详细说明。
函数:home_url()
回调函数中使用的最后一个函数是 home_url() ,这是一个返回当前站点主页 url 的 WordPress 函数。
home_url( string $path = '', string|null $scheme = null )
例如,您可以使用 home_url() 函数显示当前站点的主页 URL,如下所示:
$url = home_url(); 回声 $url;
因此,在注销后的 WooCommerce 重定向的这种情况下,它将返回当前站点 URL 并将其作为字符串添加到wp_redirect()
函数。
为了让我们了解 WooCommerce 注销重定向挂钩在您的代码中应用时的工作原理,我们需要查看这些默认的 WordPress 函数中的每一个以及它们在创建重定向中所起的作用。
当前页面重定向 – Woocommerce 注销按钮并重定向到当前页面
注销后第二个最常见的 WooCommerce 重定向是用户注销后重定向到当前页面。 当您希望用户留在他们退出时的同一页面时,这一点很重要。
在这种情况下,我们需要知道当前用户的页面并将其应用于 WooCommerce 注销重定向逻辑。
要在注销事件后创建 WooCommerce 重定向到当前页面,我们需要使用get_permalink()
函数让我们知道当前页面,然后将其应用于注销回调函数。
在这种情况下,您应该将以下代码片段添加到您的functions.php
或插件文件中,以在注销到当前页面后执行 WooCommerce 重定向。
功能 njengah_redirect_current_page_after_logout( $logout_url, $redirect ){ 返回 $logout_url 。 '&redirect_to=' 。 get_permalink(); } add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);
代码如何运作
此代码包含一个过滤器挂钩logout_url
和回调函数具有get_permalink()
WordPress 函数,该函数为前端用户建立当前页面并使用它返回注销 URL。
过滤器:logout_url()
在这种情况下,我们使用logout_url
,它是另一个核心 WordPress 和 WooCommerce 注销过滤器,已在 WordPress 函数logout_url
下面的部分中详细讨论。
此代码可能不适用于所有用户,并且可能对管理后端中的用户失败。 这是针对“我的帐户”页面上的客户注销后的适当重定向,但不适用于其他角色。
为了让它也适用于后端的用户,我们需要将get_permalink()
函数替换为代表当前页面的 HTTP 查询值。
PHP 超级全局 $_SERVER['HTTP_HOST']
所以在这种情况下,我们需要添加这个 $_SERVER['HTTP_HOST'] 超级全局函数来替代get_permalink()
函数。 $_SERVER
是一个 PHP 超级全局变量,包含有关标头、路径和脚本位置的信息。
$_SERVER['HTTP_HOST']
超级全局返回当前请求的主机头。 因此,它可以帮助我们获取当前页面,以便我们可以在注销后将其应用于 WooCommerce 重定向 URL。适用于所有用户的新代码应如下所示:
功能 njengah_redirect_current_page_after_logout( $logout_url, $redirect ){ 返回 $logout_url 。 '&redirect_to=http://' 。 $_SERVER['HTTP_HOST'] 。 $_SERVER['REQUEST_URI']; } add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);
您现在可以按照我之前分享的有关如何创建 WooCommerce 注销按钮的教程创建一个按钮来包装重定向链接。
特定页面重定向 – Woocommerce 注销重定向页面(按 ID)
在某些情况下,您可能希望在用户注销后将其重定向到特定页面。 可以使用页面 ID 将页面添加到 WooCommerce 注销重定向逻辑。
在这种情况下,您需要知道页面 ID,以便在重定向函数中传递它。 您可以使用以下代码片段通过 id 实现 WooCommerce 注销重定向到特定页面。
add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; }
代码如何运作
此代码使用wp_logout
操作挂钩,在回调函数中,我们有get_permalink()
函数和变量$pageID
应替换为结帐后您要重定向用户的页面的 ID。
如果您不确定页面 ID,可以使用我写的这篇关于如何在 WordPress 中获取页面 ID 的帖子。
WooCommerce 功能:wc_get_page_id()
您还可以使用要重定向用户的页面名称以及wc_get_page_id()
WooCommerce 函数,如下面的代码片段所示:
add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink(wc_get_page_id('shop'))); 出口; }
wc_get_page_id()
函数检索页面 id,它通常用于 myaccount、edit_address、shop、cart、checkout、pay、view_order、terms,如果没有找到页面则返回 -1。
客户角色重定向 – Woocommerce 客户注销重定向
注销后的另一个 WooCommerce 重定向场景是您希望根据角色重定向用户的地方。 您可能希望在客户注销后将其重定向到给定页面,而不是在注销后默认“我的帐户”重定向。
在这种情况下,您可以使用下面共享的代码片段单独为客户角色或另一个角色或一组角色在注销后执行重定向:
if( is_user_logged_in() ) { // 检查是否有登录用户 $user = wp_get_current_user(); // 获取&设置当前用户 $roles = ( 数组 ) $user->roles; // 获取角色 // $角色[0]; // 返回一个角色 //返回$角色; // 返回角色数组 // 在这里进行比较 if($roles[0] == '客户'){ // 如果当前用户的角色等于客户,则执行重定向 add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; } } }
代码如何运作
我们首先检查用户是否已登录,正如我在之前关于如何查找 WordPress 用户是否已登录的文章中所解释的那样。
获取用户角色
第二步是使用wp_get_current_user()
函数获取 WordPress 中当前用户的角色,并确定当前用户的角色。
如果角色匹配客户,则比较并执行重定向
第三步是现在将上一步中获得的角色与客户角色进行比较,如果角色匹配,您现在添加重定向操作和功能。
您可以将该角色替换为另一个其他角色,包括自定义角色。 您还可以通过在get_permalink()
函数中传递不同的页面 ID 来更改重定向页面。
上一页重定向- Woocommerce 注销重定向到上一页
您可以在注销到上一页后使用会话创建 WooCommerce 重定向。 在这种情况下,您需要创建一个会话并将其添加到一个函数中,并在逻辑中使用它来创建注销后到上一页的重定向。
您可以使用下面的代码片段创建 WooCommerce 注销重定向到上一页:
// 启动全局会话以保存引用 url 功能开始会话(){ session_start(); } add_action('init', 'start_session', 1); // 获取引用地址并保存 功能重定向网址(){ if (is_user_logged_in()) { $_SESSION['referer_url'] = wp_get_referer(); } 别的 { session_destroy(); } } add_action('template_redirect', 'redirect_url'); //注销重定向 功能 njengah_logout_redirect() { if (isset($_SESSION['referer_url'])) { wp_redirect($_SESSION['referer_url']); } 别的 { wp_redirect(home_url()); } } add_filter('wp_logout', 'njengah_logout_redirect', 1100, 2);
代码如何运作
此代码使用 PHP 会话来创建会话并保存当前页面 URL,并在重定向函数中测试设置的会话 URL - $_SESSION['referer_url']
。
如果设置了它,我们将创建到该页面的重定向,就像我们之前讨论的其他注销重定向一样。
我的帐户页面重定向 – Woocommerce 我的帐户注销重定向
我的帐户页面中的 WooCommerce 注销重定向是有关 WooCommerce 注销的最常见问题之一。
这与其他注销重定向没有什么不同,实际上您可以使用以下代码片段在“我的帐户”页面上添加注销重定向:
add_action('wp_logout','njengah_my_account_page_logout_redirect'); 功能 njengah_my_account_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; }
您可以在 get_permalink() 函数中更改$pageID
pageID 变量的值以对应重定向页面或帖子的页面 ID,这将无缝工作。
外部 URL 重定向 - Woocommerce 注销重定向功能 PHP 片段:
如果您想在用户从您的 WooCommerce 商店注销后将其重定向到外部 URL,您可以使用添加到主题功能或自定义插件中的片段来完成此操作。
这个 WooCommerce 注销重定向函数 php 片段可以添加到 functions.php 文件中以在注销后创建重定向,如下所示:
add_action('wp_logout','njengah_redirect_after_logout'); 功能 njengah_redirect_after_logout(){ wp_redirect($url); 出口(); }
只需在 functions.php 中添加此代码片段,并将$url
变量替换为您各自的重定向 URL 引号。
例如,如果您想在用户注销后将其重定向到外部 URL,并且外部 URL 是 http://example.com ,则可以将$url
变量替换为完整的 URL,如下面的代码所示:
add_action('wp_logout','njengah_redirect_after_logout'); 功能 njengah_redirect_after_logout(){ wp_redirect('http://example.com'); 出口(); }
WP 注销重定向 URL – Woocommerce 注销 URL
如果您想创建一个 WooCommerce 注销按钮并将其放置在自定义模板或任何其他页面中,它可以帮助您了解 WP 注销重定向 URL,您可以轻松地将其添加到任何按钮或链接上。
以下是WP注销重定向URL,可以通过更改参数'my-account'更改为任何其他页面“
wp_logout_url( get_permalink(wc_get_page_id('myaccount')) );
您还可以在 WooCommerce 注销重定向 URL 中使用外部 URL,如下所示:
wp_logout_url( 'http://example.com/' );
您还可以将 WordPress 功能添加到 WP 注销重定向 URL,如下所示:
wp_logout_url( home_url() );
此 WP 注销重定向 URL 可以添加到自定义模板中,也可以在短代码或按钮中使用,以在不是注销按钮默认位置的位置显示注销选项,例如小部件、页脚、顶部栏菜单等等。
修复注销重定向错误:Woocommerce 注销重定向不起作用
如果您自定义了 WooCommerce 注销重定向但它不起作用,则可能是您的代码中存在错误或以下原因之一。
挂钩优先级
第一步是检查add_action()
或add_filter()
与其他 WordPress 挂钩的优先级。 这是注销重定向错误的最常见原因之一。
钩子的优先级越高,加载发生的越早。 如果两个钩子具有相同的优先级,则首先加载位于另一个顶部的钩子。 调整动作或过滤钩子的优先级可能是开始调试的好地方。
代码错误 – 语法错误
第二步你需要检查所有代码是否有错误,常见的错误是语法错误。 可能在您编辑代码时,您可能会忘记放置右引号或括号。
计数器检查代码,最好将代码添加到 PHP 语法错误检查器。
最好熟悉 Visual Studio 等工具或 Netbeans 等 IDE,因为这些工具可以快速帮助您找出代码中的语法错误。
添加到错误文件的代码
WooCommerce 注销重定向不起作用错误的另一个常见原因是当您拥有正确的代码但将其添加到错误的位置时。 在这种情况下,如果您要将代码添加到主题中,则应严格将其添加到 functions.php 文件中。
将此代码添加到插件时,应注意不要将其添加到未实例化的类中。 将它添加到插件基础文件中并修复任何可能需要的更改以确保代码适合您的自定义插件文件结构的上下文是一个好主意。
插件或主题冲突
在大多数情况下,有一些插件或主题可以控制 WooCommerce 中的登录和注销重定向。 这些插件可能会发生冲突,导致注销重定向错误。
如果您遇到 WooCommerce 重定向注销错误,您可以首先停用所有插件并使用默认的 WordPress 主题来检查错误是否是由插件或主题冲突引起的。
Woocommerce 注销重定向插件
最后,没有什么比具有正确功能、良好用户体验和世界级支持的编码良好的插件更容易在注销后添加 WooCommerce 重定向了。 多年来,我在 WooCommerce 和 WordPress 上修复了数百个注销、登录和注册问题。
在过去的几周里,我汇总了关于 WooCommerce 重定向和注销的所有经验和教训。 我已经建立了一个非凡的 WooCommerce 注销重定向 URL,它包含以下功能:
注销重定向功能
- 注销后 WooCommerce 重定向到任何页面 - 从下拉列表中选择页面
- 注销后 WooCommerce 重定向到任何单个产品 - 从下拉列表中选择产品
- 注销后 WooCommerce 重定向到任何单个帖子 - 从下拉列表中选择帖子
- 注销后 WooCommerce 重定向到任何产品类别 - 从下拉列表中选择产品类别
- 注销后 WooCommerce 重定向到当前页面
- 注销后 WooCommerce 重定向到上一页
- 注销后 WooCommerce 重定向到外部 URL
- WooCommerce 根据角色在注销后重定向
- WooCommerce 在注销后根据购买历史重定向(适用于特价商品)
- 结帐后 WooCommerce 强制注销
登录重定向功能
- WooCommerce 登录后重定向到任何页面 - 从下拉列表中选择页面
- WooCommerce 登录后重定向到任何单个产品 - 从下拉列表中选择产品
- WooCommerce 登录后重定向到任何单个帖子 - 从下拉列表中选择帖子
- WooCommerce 登录后重定向到任何产品类别 - 从下拉列表中选择产品类别
- 登录到当前页面后,WooCommerce 重定向
- WooCommerce 登录后重定向到上一页
- 登录到外部 URL 后 WooCommerce 重定向
- WooCommerce 登录后根据角色重定向
- WooCommerce 登录后根据购买历史重定向(适用于特价商品)
WooCommerce 登录和注销后重定向 (WRAL) 插件将在未来几周内发布。 如果您想成为早期采用者,请不要落后,因为发布将提供 70% 的折扣。
您可以立即与我联系,加入前 100 名早期采用者的名单。 它将于2020年 11 月 2 日发布。
在 WordPress 中创建注销重定向 - 核心功能
在查看了在注销后添加片段以创建 WooCommerce 重定向的快速方法之后,它有助于突出显示默认的 WordPress 注销功能和挂钩,并为正在阅读本指南以了解这些重定向如何工作的开发人员详细解释。
这些功能和操作挂钩可用于在注销后创建 WooCommerce 重定向。 通常,您可以使用以下钩子和函数创建 WooCommerce 注销重定向:
- wp_logout_url() 函数
- wp_logout 动作钩子
- 注销重定向过滤器
我想解释这些功能中的每一个,以及如何在结帐后使用它来创建 WooCommerce 重定向,以及为什么你可能想要使用其中一个而不是另一个。
强调使用过滤器创建 WooCommerce 登录重定向的方式也很重要。 还有一个功能对于在 WooCommerce 中创建登录重定向也很有用。 让我们从登录重定向钩子开始,它对于在 WooCommerce 中创建登录重定向非常有用。
WooCommerce 登录重定向:woocommerce_login_redirect 挂钩
这是允许我们控制 WooCommerce 中的登录重定向功能的特殊 WooCommerce 钩子。 它类似于在注销后创建 WooCommerce 重定向时应用的默认 WordPress 注销功能。 其基本用法如下:
apply_filters( 'woocommerce_login_redirect', $redirect, $user );
如您所见,它需要2个参数,参数如下:
范围 | 描述 | 使用示例 |
$redirect | 这是用户登录后将登陆的重定向页面。 在登录后更改默认的 WooCommerce 重定向以允许用户在登录后登陆特定页面时很有用。 | add_filter('woocommerce_login_redirect', 'login_redirect') 您可以添加过滤器挂钩,并在回调函数中传递重定向逻辑,如下所示: 如您所见,我添加了参数 $redirect_to 并返回了重定向 URL,以在用户登录后将用户重定向到主页。 |
$user | 这是应用重定向操作的用户。 当您想在登录后为特定用户创建重定向时,这可能特别有用。 |
钩子:woocommerce_login_redirect 不工作
此代码可用于主题和插件代码,但您需要了解优先级以避免提前或延迟触发,这将导致woocommerce_login_redirect
无法正常工作的常见情况。
您还需要找出可能导致woocommerce_login_redirect
的其他原因。 特别感兴趣的是另一个插件,它具有相似或相同的功能,可以在您的代码被触发之前工作。
因此,如果您发现woocommerce_login_redirect
不起作用。首先要检查的是优先级一个案例示例,您可能有这两个代码片段:
# 较低的优先级
add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );
# 更高的优先级
add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );
正如您所看到的,在这两种情况下,优先级数字是不同的,基本规则是数字越小优先级越高——意味着它首先加载。
当您在主题或其他插件的其他地方使用此功能并且您尝试在登录或注销功能后重新创建 WooCommerce 重定向时,您需要注意优先级。 这是解决woocommerce_login_redirect
不起作用问题的解决方案。
WordPress 登出功能 – wp_logout_url()
该函数负责在 WordPress 中创建注销 URL。
它可以帮助开发人员和 WordPress 用户快速创建一个可以添加到链接或按钮的注销 URL,我在本文中进行了说明——如何创建 WooCommerce 注销 URL 。
WooCommerce 通过让 URL 端点在帮助开发人员和用户创建 WooCommerce 注销页面方面发挥关键作用而无需任何编码来扩展功能。
如果您想深入了解 WooCommerce 和 WordPress 注销过程,从评估wp_logout_url()
函数开始会有所帮助。
这是一个特殊的功能,您会在几个 WordPress 主题和插件中遇到它,并且最好了解一下幕后发生的事情。
该函数的基本用法如下:
wp_logout_url( string $redirect = '' )
如您所见,该函数采用一个字符串参数,以下是参数的详细信息:
范围 | 描述 | 使用示例 |
$redirect | 这是一个字符串参数,添加它是可选的,您可以将其留空,该功能将起作用。 但是,在您想要将重定向 URL 添加到特定页面的情况下,它很有用。 因此,在这种情况下, 您还可以将其他函数作为严格返回字符串的参数传递,因为 | 您可以使用此功能以及如下链接: 您可以使用此函数并将另一个函数作为参数传递,该函数返回重定向 URL 的字符串,如下所示: |
如果您想进一步了解该功能,请查看 WordPress 核心中定义的代码。 该核心功能代码如下:
函数 wp_logout_url( $redirect = '' ) { $args = 数组(); 如果(!空($重定向)){ $args['redirect_to'] = urlencode($redirect); } $logout_url = add_query_arg($args, site_url('wp-login.php?action=logout', 'login')); $logout_url = wp_nonce_url( $logout_url, '注销' ); /** * 过滤注销 URL。 * * @since 2.8.0 * * @param string $logout_url HTML 编码的注销 URL。 * @param string $redirect 注销时重定向到的路径。 */ 返回 apply_filters('logout_url', $logout_url, $redirect); }
动作挂钩:wp_logout
这是一个在用户退出时触发的动作钩子。 它在注销后创建重定向功能中起着重要作用。该功能的基本用法如下:
do_action( 'wp_logout', int $user_id )
如您所见,它需要一个参数,参数的详细信息如下:
范围 | 描述 | 使用示例 |
$user_id | 这是已注销用户的 ID。 | add_action('wp_logout','logout_redirect'); 在这种情况下,我们将它添加为一个动作钩子,我们可以在回调函数中传递注销逻辑后的重定向,如下所示: 因此,在这种情况下,我们在注销后将用户重定向到主页。 |
当您想在用户登录或注销后控制用户的重定向时,这些功能很有用。
WordPress 过滤器挂钩 logout_redirect
在 WooCommerce 中注销后可用于创建重定向的另一个过滤器挂钩是过滤器挂钩 logout_redirect。 这个过滤器钩子像wp_logout_url()
函数或 wp_logout 动作钩子一样工作。
它是一个基本的 WordPress 过滤器,旨在帮助在注销后创建 WordPress 或 WooCommerce 重定向。 其基本用法如下:
apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )
如您所见,它具有三个参数,参数可以详细描述如下:
范围 | 描述 |
$redirect_to | 这是重定向目标 URL,它必须是字符串,例如 http://example.com |
$requested_redirect_to | 这是作为参数传递的请求的重定向目标 URL,它也必须是字符串,就像第一个参数一样。 |
$user | 这是用户对象 - 已注销用户的 WP_User 对象。 |
您可以在注销后使用 logout_redirect 创建基于过滤器的 WordPress 重定向,如下所示:
add_filter('login_redirect', 'njengah_logout_redirect', 10, 3); 功能 njengah_logout_redirect( $location, $request, $user ) { 全局$用户; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( '订阅者', $user->roles ) ) { 返回 home_url(); } 别的 { 返回 $redirect_to; } } 返回; }
WordPress 过滤器挂钩 login_redirect
同样重要的是要指出有一个类似的登录过滤器 - login_redirect 它的工作方式与 logout_redirect 过滤器相同。 其实用法也差不多,都带了3个参数,一般表达式如下:
apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )
The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:
范围 | 描述 |
$redirect_to | This is the redirect destination URL and it must be a string, for example, http://example.com |
$requested_redirect_to | This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter. |
$user | This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter |
As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.
In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:
- Default WordPress
logout_redirect
– using filter to create redirect after logout - Action hook
wp_logout
– fired after the logout and thus can be used to create redirect. - WordPress logout function
wp_logout_url()
– WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.
WooCommerce Multisite Redirect After Logout
When you are creating a redirect after logout in WooCommerce the wp_logout
hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.
In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts
filter.
It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.
Filter Hook: allowed_redirect_hosts
This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:
apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )
As you can see in the expression above, it takes two parameter and they can be explained in details as follows:
范围 | 描述 | Usage Example(s) |
$hosts (string[]) | This is simply an array with all the allowed host names | add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' ); |
$host (string) | This is the host name of the redirect destination. This can be left empty. |
You can add more hosts to the callback function and come up with code like this:
add_filter('allowed_redirect_hosts', 'njengah_allow_parent_redirect'); 函数 njengah_allow_parent_redirect( $allowed ) { $允许 = 数组( 'blog.example.com', 'codex.example.com', ); 返回 array_merge( $hosts, $allowed ); }
这仅用于验证允许的重定向 URL,这是注销后 WooCommerce 重定向的重要补充,因为在大多数情况下,默认wp_logout
重定向将在没有过滤重定向主机的情况下失败。
WordPress重定向功能:wp_重定向
当您在 WooCommerce 或 WordPress 中创建重定向时,正如我在有关如何在 WooCommerce 中结帐后创建重定向的帖子中解释的那样,您需要wp_redirect()
函数。
了解此功能的作用对于在结帐后创建 WooCommerce 重定向至关重要,因为它是负责在 WordPress 和 WooCommerce 中执行重定向的核心功能。 让我们简要概述一下它是如何工作的以及它采用的参数。 wp_redirect()函数的一般用法如下:
wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
如您所见,此函数接受三个参数,它们可以详细描述如下:
范围 | 描述 |
$location | 这是重定向用户的路径或 URL。 它必须是一个字符串,并且它是函数工作所必需的。 |
$status | 这是应该应用于此重定向的 HTTP 响应状态代码,这是一个整数,使用它是可选的。 例如,您可以为永久重定向添加 301,也可以将其保留为默认值,即 302,表示暂时移动。 |
$x_redirect_by | 这是执行重定向的应用程序,默认情况下是 WordPress,并且应该很少取消设置,因为我们在注销后创建 WooCommerce 重定向,这是在 WordPress 的上下文中。 |
笔记
重要的是要了解,当您使用 wp_redirect() 函数时,tit 不会自行退出。 因此,始终在函数后添加 exit 很重要,因为 PHP 中的 exit 用于在执行上一行代码后终止当前正在运行的脚本。 所以使用wp_redirect
函数的最佳方式如下:
wp_redirect($url); 出口
您还可以使用带有if statement
的 wp_redirect 函数创建条件重定向,如下所示:
if ( wp_redirect( $url ) ) { 出口; }
该函数可以与template_redirect
钩子一起使用,如下代码所示:
功能 njengah_wp_redirect_example() { if ( is_user_logged_in() && is_page( $id ) ){ wp_redirect(get_permalink($id)); 出口; } } add_action('template_redirect', 'njengah_wp_redirect_example');
正如您在上面的代码中所看到的,它可以将函数作为参数,前提是该函数为 $location 参数返回一个字符串,就像get_permalink( )
函数一样
WordPress 重定向功能:wp_safe_redirect()
wp_safe_redirect()
是第二个 WordPress 重定向函数,可用于在注销后执行 WooCommerce 重定向。此函数的工作方式与wp_redirect()
函数类似,但它对重定向 URL 有额外的验证。
在 wp_redirect 函数中,$location 参数未被验证,但在wp_safe_redirect()
函数中, $location
参数被检查以确定它是否是允许的主机。
这就是两个重定向功能之间的区别。 该重定向函数的一般用法与wp_redirect
类似,一般表达式如下:
wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
如您所见,参数是相同的:
范围 | 描述 |
$location | 这是重定向用户的路径或 URL。 它必须是一个字符串,并且它是函数工作所必需的。 |
$status | 这是应该应用于此重定向的 HTTP 响应状态代码,这是一个整数,使用它是可选的。 例如,您可以为永久重定向添加 301,也可以将其保留为默认值,即 302,表示暂时移动。 |
$x_redirect_by | 这是执行重定向的应用程序,默认情况下是 WordPress,并且应该很少取消设置,因为我们在注销后创建 WooCommerce 重定向,这是在 WordPress 的上下文中。 |
此功能允许插件开发人员设置或删除允许的主机列表,如果主机不在允许的主机列表中,则重定向失败并默认为 wp-admin。
就像wp_redirect
函数一样, wp_safe_redirect
不会自动退出,它还需要您添加退出,如下面的代码片段所示:
wp_safe_redirect($url); 出口;
您还可以将它与上一个示例中的条件语句一起使用:
if ( wp_safe_redirect( $url ) ) { 出口; }
结论
在这篇文章中,我概述了在注销选项后创建各种 WooCommerce 重定向的分步方法。 我用代码示例说明了如何使用来自 WordPress 核心的各种可用功能和挂钩来创建 WordPress 或 WooCommerce 重定向注销。
快速总结一下我们所涵盖的内容; 注销后如何创建重定向到:
- 当前页面注销重定向
- 上一页注销重定向
- 主页注销重定向
- 特定页面注销重定向
- 外部 URL 注销重定向
我希望本指南为您在 WooCommerce 中创建注销重定向时提供了一个很好的起点。 如果您想分享反馈或为改进本指南做出贡献,甚至指出错误或错误,请随时与我联系。 如果您喜欢本指南,您可能还想查看我写的关于如何在购买后创建 WooCommerce 重定向的其他指南。
类似文章
- 如何通过命令行创建 MySQL 数据库 WordPress
- WooCommerce 注销 PHP 代码段以创建注销按钮
- 如何在 Woocommerce 的“我的帐户”页面菜单中添加新菜单
- 如何重新排序类别商店页面 WooCommerce 店面主题
- 如何在 WooCommerce 中获取付款方式 » 代码示例
- 如何开始使用 WooCommerce 店面主题
- 如何开始使用 Vue Storefront [初学者指南]
- 如何设置 WooCommerce 店面主题产品页面全宽
- 如何更改店面主题标语 WooCommerce
- 如何在 WooCommerce 店面设置主页
- 如果未登录 WordPress 如何重定向用户 » 页面重定向
- 如何更改 WooCommerce 的“已添加到购物车”通知
- 如何在没有插件的情况下重定向 WordPress 页面?
- 如何在 WordPress 中获取登录用户信息
- 如何删除相关产品 WooCommerce 店面主题
- 如何检查用户是否在 WordPress 中登录
- 如何添加店面主题标题背景图像
- 如何删除页面标题 WooCommerce 店面主题
- 如何设置 WooCommerce 店面运输快速指南
- 如何删除下载菜单我的帐户页面 WooCommerce
- 如何更改 WooCommerce 店面徽标大小
- 如何在 the_content 之前或之后添加内容以及在自定义帖子类型中
- 如何使 Divi 移动菜单可滚动快速修复解决方案
- 在 WooCommerce 中如何在价格前添加文本 » 在价格前添加文本
最佳 WooCommerce 插件列表
- 为您的商店提供 30 多个最佳 WooCommerce 插件(大多数是免费的)
- 用于客户反馈的 26 个最佳 WooCommerce 插件
- 用于列表构建的 30 多个最佳 WordPress 邮件列表插件
- 30 多个用于成功博客的最佳 WordPress 博客插件