Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 海关商业追踪表格_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 海关商业追踪表格

Php 海关商业追踪表格,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,Woocommerce有一个默认的跟踪表单,允许客户查看其订单状态 但我希望用计费电话号码(其值应为Billing\u Phone)替换电子邮件请求 你知道如何改变吗?用计费电话更改订单(电子邮件)似乎不那么容易 以下是woocommerce/order/tracking-form.php中的部分 <p class="form-row form-row-first"> <label for="orderid">

Woocommerce有一个默认的跟踪表单,允许客户查看其订单状态

但我希望用计费电话号码(其值应为
Billing\u Phone
)替换电子邮件请求

你知道如何改变吗?用
计费电话
更改
订单(电子邮件
)似乎不那么容易

以下是woocommerce/order/tracking-form.php中的部分

<p class="form-row form-row-first">
    <label for="orderid">
        <?php esc_html_e( 'Order ID', 'woocommerce' ); ?>
    </label>
    <input class="input-text" type="text" name="orderid" id="orderid" value="<?php echo isset( $_REQUEST['orderid'] ) ? esc_attr( wp_unslash( $_REQUEST['orderid'] ) ) : ''; ?>" placeholder="<?php esc_attr_e( 'Found in your order confirmation email.', 'woocommerce' ); ?>" />
</p>
<?php // @codingStandardsIgnoreLine ?>
<p class="form-row form-row-last">
    <label for="order_email">
        <?php esc_html_e( 'Billing email', 'woocommerce' ); ?>
    </label>
    <input class="input-text" type="text" name="order_email" id="order_email" value="<?php echo isset( $_REQUEST['order_email'] ) ? esc_attr( wp_unslash( $_REQUEST['order_email'] ) ) : ''; ?>" placeholder="<?php esc_attr_e( 'Email you used during checkout.', 'woocommerce' ); ?>" />
</p>
<?php // @codingStandardsIgnoreLine ?>
<div class="clear"></div>


没有简单的解决办法。因为WC的核心流程是获取电子邮件输入,并将其与订单计费电子邮件进行比较。 不幸的是,我找不到一个简单的方法来覆盖它。 但是您可以考虑调整主题文件夹中模板文件的副本,以从代码中获得响应,而不是WC.

。 为此,您需要:

  • 更改表单中的nonce字段,以便对操作进行自定义(然后您将能够从服务器端“捕获”并处理它:
  • wp_nonce_字段('woocmerce-order_tracking_custom','woocmerce order tracking custom nonce')

  • class wc shortcode order tracking.php

  • 类似于这样的内容:

    add_action('init', 'handle_tracking_request');
    function handle_tracking_request(  ) {
            // Check cart class is loaded or abort.
            if ( is_null( WC()->cart ) ) {
                return;
            }
    
            $nonce_value = wc_get_var( $_REQUEST['woocommerce-order-tracking-custom-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) );
    
            if ( isset( $_REQUEST['orderid'] ) && wp_verify_nonce( $nonce_value, 'woocommerce-order_tracking_custom' ) ) { 
    
                $order_id    = empty( $_REQUEST['orderid'] ) ? 0 : ltrim( wc_clean( wp_unslash( $_REQUEST['orderid'] ) ), '#' ); // WPCS: input var ok.
                $order_phone = empty( $_REQUEST['order_phone'] ) ? '' : sanitize_email( wp_unslash( $_REQUEST['order_phone'] ) ); 
    
                if ( ! $order_id ) {
                    wc_print_notice( __( 'Please enter a valid order ID', 'woocommerce' ), 'error' );
                } elseif ( ! $order_phone ) {
                    wc_print_notice( __( 'Please enter a valid phone', 'woocommerce' ), 'error' );
                } else {
                    $order = wc_get_order( apply_filters( 'woocommerce_shortcode_order_tracking_order_id', $order_id ) );
    
                    if ( $order && $order->get_id() && ( $order->get_billing_phone() ) === strtolower( $order_phone ) ) {
                        do_action( 'woocommerce_track_order', $order->get_id() );
                        wc_get_template(
                            'order/tracking.php', array(
                                'order' => $order,
                            )
                        );
                        return;
                    } else {
                        wc_print_notice( __( 'Sorry, the order could not be found. Please contact us if you are having difficulty finding your order details.', 'woocommerce' ), 'error' );
                    }
                }
            }
    
            wc_get_template( 'order/form-tracking.php' );
        }
    
    我没有测试它,希望它能工作。你可能需要进一步调整它。如果它对你有帮助,请告诉我

    add_action('init', 'handle_tracking_request');
    function handle_tracking_request(  ) {
            // Check cart class is loaded or abort.
            if ( is_null( WC()->cart ) ) {
                return;
            }
    
            $nonce_value = wc_get_var( $_REQUEST['woocommerce-order-tracking-custom-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) );
    
            if ( isset( $_REQUEST['orderid'] ) && wp_verify_nonce( $nonce_value, 'woocommerce-order_tracking_custom' ) ) { 
    
                $order_id    = empty( $_REQUEST['orderid'] ) ? 0 : ltrim( wc_clean( wp_unslash( $_REQUEST['orderid'] ) ), '#' ); // WPCS: input var ok.
                $order_phone = empty( $_REQUEST['order_phone'] ) ? '' : sanitize_email( wp_unslash( $_REQUEST['order_phone'] ) ); 
    
                if ( ! $order_id ) {
                    wc_print_notice( __( 'Please enter a valid order ID', 'woocommerce' ), 'error' );
                } elseif ( ! $order_phone ) {
                    wc_print_notice( __( 'Please enter a valid phone', 'woocommerce' ), 'error' );
                } else {
                    $order = wc_get_order( apply_filters( 'woocommerce_shortcode_order_tracking_order_id', $order_id ) );
    
                    if ( $order && $order->get_id() && ( $order->get_billing_phone() ) === strtolower( $order_phone ) ) {
                        do_action( 'woocommerce_track_order', $order->get_id() );
                        wc_get_template(
                            'order/tracking.php', array(
                                'order' => $order,
                            )
                        );
                        return;
                    } else {
                        wc_print_notice( __( 'Sorry, the order could not be found. Please contact us if you are having difficulty finding your order details.', 'woocommerce' ), 'error' );
                    }
                }
            }
    
            wc_get_template( 'order/form-tracking.php' );
        }