php - 登录后如何重定向到结帐页面(wordpress)?
问题描述
当用户在没有登录的情况下单击购买按钮时,以下代码会打开一个登录弹出窗口(效果很好)。
我的问题是,我需要在登录后重定向到结帐页面(www.mywebsite.com/my-checkout)(因为用户登录结帐)。
目前,当用户点击购买按钮时,进入首页并打开登录弹窗,登录后停留在首页。
请告诉我如何调整以下代码?
add_action('template_redirect','check_if_logged_in');
function check_if_logged_in()
{
$pageid = get_option( 'woocommerce_checkout_page_id' );
if(!is_user_logged_in() && is_page($pageid))
{
$url = add_query_arg(
'redirect_to',
get_permalink($pagid),
site_url('/#login')
);
wp_redirect($url);
exit;
}
if(is_user_logged_in())
{
if(is_page(get_option( 'woocommerce_myaccount_page_id' )))
{
$redirect = $_GET['redirect_to'];
if (isset($redirect)) {
echo '<script>window.location.href = "'.$redirect.'";</script>';
}
}
}
}
谢谢你。
解决方案
你可以使用woocommerce_login_redirect
钩子。
function wc_redirect_login( $redirect, $user ) {
$redirect_page_id = url_to_postid( $redirect );
$checkout_page_id = wc_get_page_id( 'checkout' );
if( $redirect_page_id == $checkout_page_id ) {
return $redirect;
}
return wc_get_page_permalink( 'shop' );
}
add_filter( 'woocommerce_login_redirect', 'wc_redirect_login' );`
您还可以尝试WooCommerce 登录重定向插件来自定义重定向。
推荐阅读
- python - 为并行进程提供共享只读资源
- django - 每次 websocket 连接处于活动状态并且自动重载由 watchman 触发时,Uvicorn 都会关闭
- deployment - 如何跳过欢迎页面并直接从 /admin(登录)页面启动 Strapi?
- arrays - 如何让 typescript 在以数组为目标的代理中对 set 方法感到满意?
- ios - About using Swiftz library issues(Functional programing)
- api - shopware 6 上传多个产品变体图像
- python - 硒简单问题
- python - Pygame - 找到给定斜边和角度的x和y
- sql - 一对多关系,查找仅包含指定值的组
- filepath - 使用 .readline() 从 txt 文件中提取的文件路径不起作用。在 python 中输入完全相同的路径确实有效