0

好吧,我有 2 种自定义帖子类型:

A = 物业 B = 业主

在 CPT Properties 中,我创建了一个 Meta Box 来:

  1. 按增值税号(巴西的 CPF)搜索注册所有者 (CPT)
  2. 将所有者与 de Property 关联

我有 CPT 和 Meta Box。Meta Boxe“Search Onwer”使用此查询向服务器发出 ajax 请求

function getOwner($post){

    global $wpdb;
    $cpfcode = $wpdb->escape($post['cpfCode']);

    $query =    'SELECT 
                    post_id,
                    meta_key, 
                    meta_value
                FROM
                    wp_postmeta
                WHERE 
                    post_id = (SELECT post_id FROM wp_postmeta WHERE meta_value = "'.$cpfcode.'");';


    $keys = $wpdb->get_results($query, OBJECT);

    if ($keys) { return $keys; } else { echo "error"; };
    exit();
}

并返回一个带有 meta_values 和 meta_keys 的 json 对象,如下所示:

[
    {
        "post_id"   :"112",
        "meta_key"  :"owner_vat",
        "meta_value":"123.456.789-10"
    },

    {
        "post_id"   :"112",
        "meta_key"  :"owner_name",
        "meta_value":"Jonh Doe"
    },

    {   
        "post_id"   :"112",
        "meta_key"  :"owner_city",
        "meta_value":"Rio de Janeiro"
    },
]

现在,我需要使用 jQuery 在某些字段中插入这些值。问题是做each还是for,我不知道。

4

2 回答 2

0

我不是你所要求的 100%,但这里是通过 JSON 请求导航的代码。下面的代码假设您有与 meta_fields 同名的输入字段。

<input id="owner_vat" type="text"> 
<input id="owner_name" type="text"> 
<input id="owner_city" type="text"> 

success: function(response){
    $.each(response, function(index, value) {
        $('#'+value['meta_key']).val(value['meta_value']);
    });     
}

希望有帮助

于 2015-10-22T19:07:27.873 回答
0

与蒂亚戈·勒温(Thiago Lewin)合作解决:

function ajx_cpf(cpfCode){

    var cpf_data = {
                    'action': 'Load_owner',
                    'cpfCode': cpfCode
                    };

    jQuery.ajax({
                type: 'POST',
                url: '<?php echo get_settings('home')?>/wp-admin/admin-ajax.php',
                data: cpf_data,

                success: function(data, textStatus, XMLHttpRequest){
                    loadOwner_sel(data);
                },

                error: function(MLHttpRequest, textStatus, errorThrown){
                    alert(errorThrown);
                }
    });
}

function loadOwner_sel(dta) {
    var
        array = JSON.parse(dta),
        obj = {};

        jQuery.each(array, function(index, item) {
            obj[item.meta_key] = item.meta_value;
        });

    document.getElementById('owner_vat').value = post_id;
    document.getElementById('owner_name').value = obj.owner_name;
    document.getElementById('owner_city').value = post_id;
}
于 2015-10-22T20:21:16.260 回答