我有一个WooCommerce网站,在"单一产品"页面中,我有一个自定义复选框,用于在"添加到购物车"按钮之前同意条款,但我正在try 在仪表板中添加一个true/false字段,以便将该复选框移到页面上的其他位置.

我的函数如下所示:

add_action( 'acf/init', "acf_move_checkbox", 10 );

function acf_move_checkbox() {
  
  $move_cart = get_field('move_cart');

    if ($move_cart) {

        add_action( 'woocommerce_after_single_product', "acf_product_terms", 10 );

    } else {

        add_action( 'woocommerce_before_add_to_cart_form', "acf_product_terms", 10 );

    }

// More code

}

什么都没发生,我的 idea 是对的还是错了?

推荐答案

虽然acf/init类似于WordPress初始化操作,但我不会使用它.

初始化钩子是不断执行的..由于您希望在单个产品页面上应用一个操作,因此最好使用一个只适用于该页面的钩子,并且只在这些类型的页面上运行.

例如,你可以使用woocommerce_single_product_summary挂钩.在检索字段之前,通过硬编码测试字段可能也很有用.


所以你得到:

function action_woocommerce_single_product_summary() {
    // Get field
    //$move_cart = get_field( 'move_cart' );
    
    // Set true OR false
    $move_cart = false;

    // When true
    if ( $move_cart ) {
        add_action( 'woocommerce_after_single_product', 'my_callback_function', 9 );
    } else {
        add_action( 'woocommerce_before_add_to_cart_form', 'my_callback_function', 9 );
    }
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 1 );

function my_callback_function() {
    echo '<p style="color: red; font-size: 20px;">Hello World!</p>';
}

如果上述步骤有效,您可以用所需的代码/字段替换硬编码字段

Php相关问答推荐

Laravel有一个具有两个匹配字段

将一个数字分配到一系列因素中(就像贪婪算法)

输入手写CSV时在PHP中进行日期判断

在WooCommerce Checkout帐单地址字段后插入自定义按钮

保存PHP条带以备将来使用,不显示用户界面

PHP中的圆生成器在国际日期变更线上失败

使用PHP curl的Amazon SP API批处理调用

通过访问单个产品页面更新WooCommerce产品元数据

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

限制某些产品只能在WooCommerce的特定邮政编码/邮政编码范围内发货

在php中,方法之间的属性链接是如何工作的

HTTPPost请求在从php脚本调用时返回404,但在从node.js脚本调用时有效.终结点有效

关于Laravel缓存出现的错误

将 PHP 版本更改为 8.1,但 WordPress 认为我们正在使用版本 7.4?

尽管有use指令,PHP 类在其他文件中仍处于可见状态

如何在 php 中获取正确的时间

Google Sheets PHP API - 添加多个选项卡时出现问题

htaccess php 文件,然后是文件夹

为什么 ECDSA 384 签名验证在 GO 中失败,但在 PHP 中却没有?

获取具有所有特定相关模型的模型