当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce中移动签出配送选项

管玉堂
2023-03-14

我正在尝试将我的woocommerce结帐中的装运选项移出审查订单。php和表单签出。php

我已经拿到密码了

<?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
    <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>
    <?php wc_cart_totals_shipping_html(); ?>
    <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>
<?php endif; ?>

并将其移动到我的主题表单签出。php的问题是,当我输入或更改地址时,它现在不会更新发货。这已经被接受为一个在线解决方案,但我认为woocommerce从那时起已经更新。

我认为问题在于,当调用update\u checkout Ajax时,配送选项现在没有更新,但我不确定如何更改。

非常感谢。

编辑:我想我知道怎么做了。我已经创建了一个模板签出/发货选项。php与

    <?php
defined( 'ABSPATH' ) || exit;
?>
<div class="card card-shipping mb-3 woocommerce-checkout-shipping-table">
                    <div class="card-header">
                        Select Shipping
                    </div>
                    <div class="card-body ">
                        <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>
                        <?php wc_cart_totals_shipping_html(); ?>
                        <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>
                    </div>
</div>  

然后在我的功能。我已经添加了php

    function woocommerce_checkout_shipping_options( $deprecated = false ) {
        wc_get_template(
            'checkout/shipping-options.php',
            array(
                'checkout' => WC()->checkout(),
            )
        );
    }
add_action( 'woocommerce_checkout_shipping_option', 'woocommerce_checkout_shipping_options', 10 );

然后添加了

<?php do_action( 'woocommerce_checkout_shipping_option' ); ?>

进入表格结帐。php

并更新了woocommerce/includes/class-wc-ajax。php update_order_review函数包含

// Get order review fragment.
ob_start();
woocommerce_order_review();
$woocommerce_order_review = ob_get_clean();

// Get checkout payment fragment.
ob_start();
woocommerce_checkout_payment();
$woocommerce_checkout_payment = ob_get_clean();

// Get checkout shipping fragment.
ob_start();
woocommerce_checkout_shipping_options();
$woocommerce_checkout_shipping_options = ob_get_clean();

// Get messages if reload checkout is not true.
$reload_checkout = isset( WC()->session->reload_checkout );
if ( ! $reload_checkout ) {
    $messages = wc_print_notices( true );
} else {
    $messages = '';
}

unset( WC()->session->refresh_totals, WC()->session->reload_checkout );

wp_send_json(
    array(
        'result'    => empty( $messages ) ? 'success' : 'failure',
        'messages'  => $messages,
        'reload'    => $reload_checkout,
        'fragments' => apply_filters(
            'woocommerce_update_order_review_fragments',
            array(
                '.woocommerce-checkout-review-order-table' => $woocommerce_order_review,
                '.woocommerce-checkout-payment' => $woocommerce_checkout_payment,
                '.woocommerce-checkout-shipping-table' => $woocommerce_checkout_shipping_options,
            )
        ),
    )
);

我现在需要解决的就是如何在不编辑核心文件的情况下更新update_order_review ajax。

暂时还没有答案

 类似资料:
  • 我有一个批发网站与不同的用户角色 如果用户角色“team”和“team2”选择发送到不同的地址,我只想添加5美元的费用(如果发送到他们的账单地址,他们将获得免费发送)。 如果选择船舶到不同的地址,其他用户角色不应该看到费用。 这是我找到的最接近实现这一目标的解决方案,但需要帮助配置此代码,使其仅适用于这两个用户角色,而不适用于其他人。

  • 大家好,我通过搜索并找到解决方案,对我在woocommerce上的结帐进行了一些编辑。 到目前为止,我已经做到了,所以我跳过购物车/篮子,直接去结账,并重命名了订单笔记文件。 我正在挣扎的是如何将订单注释字段移动到订单评论上方。我知道我需要使用这个woocommerce_checkout_before_order_review但我不知道如何使用。任何帮助都会很棒吗?

  • 我在我的主题functions.php文件中有一个函数,它显示了一些关于产品的信息。在账单地址下面的结账页面上,我想把信息放在那里。 这是我在主题函数中的函数。php 我已尝试在帐单地址下方使用“添加过滤器”,但不起作用: 所有我需要的是下面的航运信息和上面的输出我认为应该工作? 谢啦 J

  • 我想沿x轴水平移动一些记号的标签,而不移动相应的记号。 更具体地说,当使用

  • 移动应用推送服务配置 使用前说明 开启服务 iOS应用服务配置(必选) Android应用服务配置(可选) 开始使用服务 移动应用推送服务配置 更新时间:2018-07-04 00:03:32 使用前说明 移动应用推送服务属于Link Develop提供的官方服务之一,帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的同时,极大地降低了开发成本。开发者在使用服务前,需要先在控制台

  • 我在JSF项目的中放置了。 选中单元格时,复选框将向右浮动。我知道这是一个css的事情,但我不确定如何修复它。