WooCommerce 中允许非结帐客人重定向

2023-12-30

After 仅允许访客在 WooCommerce 中结帐特定产品 https://stackoverflow.com/questions/64322204/allow-guest-checkout-for-specific-products-only-in-woocommerce/64324562#64324562回答我之前的问题,以下代码将用户重定向到登录页面:

add_action( 'template_redirect', 'checkout_redirect_non_logged_to_login_access');
function checkout_redirect_non_logged_to_login_access() {
    if( is_checkout() && !is_user_logged_in()){
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id') ) );
        exit;
    }
} 

但我有一些允许客人结帐的产品(请参阅上面链接的问题/答案)。那么,如何修复允许访客结帐禁用该代码重定向的产品代码呢?


您可以将我之前的答案代码替换为以下内容:

// Custom conditional function that checks if checkout registration is required
function is_checkout_registration_required() {
    if ( ! WC()->cart->is_empty() ) {
        // Loop through cart items
        foreach ( WC()->cart->get_cart() as $item ) {
            // Check if there is any item in cart that has not the option "Guest checkout allowed"
            if ( get_post_meta( $item['product_id'], '_allow_guest_checkout', true ) !== 'yes' ) {
                return true; // Found: Force checkout user registration and exit
            }
        }
    }
    return false;
}

add_filter( 'woocommerce_checkout_registration_required', 'change_tax_class_user_role', 900 );
function change_tax_class_user_role( $registration_required ) {
    return is_checkout_registration_required();
}

那么您当前的问题代码将改为:

add_action( 'template_redirect', 'checkout_redirect_non_logged_to_login_access');
function checkout_redirect_non_logged_to_login_access() {
    if( is_checkout() && !is_user_logged_in() && is_checkout_registration_required() ){
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id') ) );
        exit;
    }
} 

代码位于活动子主题(或活动主题)的functions.php 文件中。它应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WooCommerce 中允许非结帐客人重定向 的相关文章

  • WordPress 网站上出现数据库错误“一个或多个数据库表不可用”

    Error One or more database tables are unavailable The database may need to be repaired 我怎么解决这个问题 wp config php 是正确的 我使用
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • 重复使用相同的卷曲手柄。性能大幅提升?

    在 PHP 脚本中 我对不同的 URL 执行了许多不同的curl GET 请求 一百个 将重复使用来自curl init提高性能 还是与请求的响应时间相比可以忽略不计 我这么问是因为在当前的架构中保持相同的句柄并不容易 交叉发布自我应该关闭
  • 按类别 ID 获取产品

    我正在为 woocommerce 编写一个定价表插件 用户插入带有 woocommerce 产品类别 ID 的短代码 更新页面后 用户可以看到一个包含产品名称和价格列表的表格 我怎样才能获得带有类别ID的产品列表 在下面的代码中 pid是用
  • 如何将 PHPMailer 与 Codeigniter 3 集成

    嗨 我正在尝试使用PHPMailer 库 https github com PHPMailer PHPMailer来自我的 Codeigniter 应用程序中的 GitHub 我下载了代码并解压到我的application library文
  • mod_rewrite :如果/否则输入 RewriteRule

    以下重写将以数字 4 开头的字符串作为变量传递给 process php RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 4 process
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • 如何从导出的 csv 文件中删除双引号

    我正在使用 Laravel 5 8 并且添加了 Maatwebsite 包 用于从数据库表导出 CSV 文件 这是我导出的类 class ConfirmedExport implements FromCollection WithHeadi
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • PHP 中的 Preg_replace

    我想替换 中包含的字符串中的内容content 它是多行等 preg replace 函数应该删除整个 com 没有垫子 蒙特 尝试这个 result preg replace s replacement content subject
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • 在 Woocommerce 购物车中设置最小小计金额

    我正在尝试将最低订单金额设置为 25 美元 到目前为止 我找到了这段代码 如果未达到最低限度 它似乎可以阻止结账 但它使用的小计包含税费 我需要在总计中排除税费 add action woocommerce checkout process
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩

随机推荐

  • 在 Windows 上为“therubyracer”安装“libv8”gem

    我安装时遇到问题therubyracerWindows 上的宝石 Using Ruby 2 1 6 32 bit和跑步 gem install libv8 v 3 16 14 3 with system v8 这是我得到的错误 Instal
  • 为什么这段代码会出现空指针异常?我认为字符类可以处理 null 被分配? [复制]

    这个问题在这里已经有答案了 public class Playground public static void main String args String s blah Character lclfs s contains s con
  • 在 Linux 上将 Android Studio 设置重置为默认设置

    每个人 我曾经在 Mac 上开发 Android 应用程序 最近我在运行Xubuntu的Thinkpad上安装了android开发环境 我通过文件 gt 导入设置将Mac上的Android studio设置导入到Xubuntu上的Andro
  • 堆栈变量与堆变量

    我的想法是否正确 char buff 500 创建一个堆栈变量 并且 char buff char malloc 500 创建一个堆变量 如果这是正确的 那么何时以及为什么要使用堆变量而不是堆栈变量 反之亦然 我知道堆栈更快还有其他什么吗
  • async/await 是否适合同时受 IO 和 CPU 限制的方法?

    MSDN 文档似乎指出async and await适用于 IO 密集型任务 而Task Run应该用于 CPU 密集型任务 我正在开发一个应用程序 该应用程序执行 HTTP 请求来检索 HTML 文档 然后对其进行解析 我有一个看起来像这
  • JSP中的编码问题

    我有一个带有几个文本字段的 html 表单 当我尝试提交非英文字符 在我的例子中是俄语 时 服务器收到 不可读 字符串 不是问题 而是一些奇怪的字符 我简化了我的代码以在此处显示
  • Cookie 在 ASP.NET 中如何工作?

    我工作的网站由多个项目组成 用多种语言编写 现在 我们必须在查询字符串和会话变量中使用一些笨拙的代码 以使人们在从一个项目转到另一个项目时保持登录状态 由于 cookie 是特定于域的 因此我们尝试将它们转换为它们 因为它们可以使用一种语言
  • 如何根据区域设置获取带有时区的数据时间模式?

    以下代码是我已经拥有的代码 DateFormat f DateFormat getDateTimeInstance DateFormat SHORT DateFormat SHORT Java Locale SimpleDateFormat
  • 如何配置 nginx 与 Jetty6 网络服务器一起工作?

    看来nginx是和php ruby python一起使用的 有人有如何设置 nginx 与后端 jetty tomcat 一起使用的示例吗 Thanks 正确的 我想我有资格成为一名自学者 不是吗 只需在 nginx conf 文件的 ht
  • 在项目创建时自动加载库。安卓、日食

    我已经弄清楚如何在桌面上获得我想要的效果 窗口 gt 首选项 gt Java gt 安装的 JRE gt jre7 编辑 gt 添加外部 JAR 但我无法在 Android 上获得相同的效果 在桌面项目中 我可以看到文件夹 JRE Syst
  • 在 MongoEngine 中过滤嵌入列表

    如果我有这些模型 class Sub EmbeddedDocument name StringField class Main Document subs ListField EmbeddedDocumentField Sub 我想要一个返
  • 从地图中写入和读取时的竞争条件

    跟进旧帖子here https stackoverflow com questions 71562369 add unique values in an array as a value in concurrent map golang 我
  • C# 中如何检查字符串是否包含字符?

    是否有一个函数可以应用于字符串 如果字符串包含字符 该函数将返回 true 或 false 我有带有一个或多个字符选项的字符串 例如 var abc s var def aB var ghi Sj 例如 我想做的是有一个函数 如果上面包含小
  • 树/差异算法

    我目前正在编写一个差异算法来检测树的两个修订版之间的插入 删除 更新和移动 而每个节点都有一个唯一的 ID 该 ID 不会因修订而改变 我将按预序遍历每棵树 并动态生成两个节点之间的差异 然后移动cursors相应地 例如 在遇到删除的节点
  • 在 SPARQL 查询中使用条件

    我有一个 SPARQL 查询 如下所示 SELECT informationPath businessEntitylabel path sourced mastered delivered WHERE businessEntity dd h
  • 是否可以检查数学表达式字符串?

    我想检查所有括号的正确开始和结束 并检查它是否是给定字符串中的数学表达式 ex str1 A1 A2 A3 A5 B3 B5 C1 A3 C2 B2 C1 str2 A1 A2 A3 A5 C1 B3 B5 C1 A3 C2 B2 C1 s
  • SYSDATETIME() 的成本是否比 GETDATE() 的成本高?

    有什么理由让我每次都停止使用 SYSDATETIME 而不是 GETDATE 难道他们都没有询问CPU 现在是什么时间 或者 sysdatetime 是否需要更多指令来计算分数 Getdate 可以四舍五入吗 sysdatetime 可以更
  • 当字段名称与局部变量相同时如何访问字段?

    我有一个字段和一个同名的局部变量 如何访问该字段 Code String s Global private void mx String s Local lblB setText s i want global 在 C 中使用 运算符 如下
  • 获取嵌入的 YouTube 视频的标题和描述

    在我正在开发的网站上 我嵌入了来自 YouTube 的视频 并希望获取视频标题及其描述 我如何获取该信息 你可以这样做oembed http www oembed com 例子 http www youtube com oembed url
  • WooCommerce 中允许非结帐客人重定向

    After 仅允许访客在 WooCommerce 中结帐特定产品 https stackoverflow com questions 64322204 allow guest checkout for specific products o