自定义Wordpress Woocommerce帐单邮寄地址编辑表单

时间:2015-11-27 11:37:58

标签: php wordpress woocommerce

默认情况下,Woocommerce有两种类型的地址结算和送货地址,这些信息可以从我的帐户页面进行编辑,点击“修改”链接,表单将在新窗口中打开。

但这就是我想要的帐户页面:

当用户访问“我的帐户”页面时,我希望在同一页面上同时包含[计费(facturacion)和送货地址(datos envio)]编辑表单。我怎样才能做到这一点?

enter image description here

我希望将两个表单放在同一页面中,而不是两个不同的表单。

我一直试图“分离”两个表单,并将它们放在同一页面中,而不是将它们放在两个不同的页面/实例中。

文件表格编辑地址包含表格。

这就是我的尝试:

在它读取的代码的开头

$page_title = ( $load_address === 'billing' ) ? __( 'Billing Address', 'woocommerce' );

我删除了运输位。但打破了所有。 显然,这里是我需要切一点来渲染计费或运输表格,我的经验是有限的PHP所以我一直在尝试各种组合,如步行盲。有人可以帮我理解这个代码来定制吗?

这是未经修改的代码:

<?php
/**
 * Edit address form
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.1.0
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

global $woocommerce, $current_user;

$page_title = ( $load_address === 'billing' ) ? __( 'Billing Address', 'woocommerce' ) : __( 'Shipping Address', 'woocommerce' );

get_currentuserinfo();
?>

<?php wc_print_notices(); ?>

<?php if ( ! $load_address ) : ?>

    <?php wc_get_template( 'myaccount/my-address.php' ); ?>

<?php else : ?>

    <form method="post">

        <h3><?php echo apply_filters( 'woocommerce_my_account_edit_address_title', $page_title ); ?></h3>

        <?php foreach ( $address as $key => $field ) : ?>

            <?php woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field['value'] ); ?>

        <?php endforeach; ?>

        <p>
            <input type="submit" class="button big" name="save_address" value="<?php _e( 'Save Address', 'woocommerce' ); ?>" />
            <?php wp_nonce_field( 'woocommerce-edit_address' ); ?>
            <input type="hidden" name="action" value="edit_address" />
        </p>

    </form>

<?php endif; ?>

1 个答案:

答案 0 :(得分:5)

以下是如何做到这一点。

select 
    id, 
    json_build_array(
        jsonb_object_agg(key, value) ||
        jsonb_build_object('sessions', sessions, 'email', email)
        ) as fields
from (
    select id, sessions, email, elem->>'field' as key, elem->>'value' as value
    from visitor, jsonb_array_elements(custom_fields) elem
    ) s
group by id, sessions, email
order by id;

 id |                                             fields                                             
----+------------------------------------------------------------------------------------------------
  1 | [{"type": "Customer", "email": "test@gmail.com", "domain": "www.hello.com", "sessions": 3}]
  2 | [{"type": "Customer", "email": "another@gmail.com", "domain": "www.other.com", "sessions": 5}]
(2 rows)