通过AJAX获取和显示多个定制字段

时间:2015-07-07 作者:Robert hue

我正在尝试从数据库中获取自定义字段值并在页面上显示它们。我可以对单个自定义字段执行此操作,但不确定如何同时对多个值执行此操作。

这是我的函数,用于获取价格自定义字段的最新值。

function get_latest_price() {
    if ( !isset($_GET[\'post_id\']) || empty($_GET[\'post_id\']) ) {
        die( \'0\' );
    }
    $post_id = intval( filter_var( $_GET[\'post_id\'], FILTER_SANITIZE_NUMBER_INT ) );
    if( empty($post_id) ) {
        die( \'0\' );
    }
    $latest_price = get_post_meta( $post_id, \'latest_price\', true );
    die( strval( $latest_price ) );
}
add_action( \'wp_ajax_nopriv_ajax-get-latest-price\', \'get_latest_price\' );
add_action( \'wp_ajax_ajax-get-latest-price\', \'get_latest_price\' );
这是JavaScript。

$(document).ready( function() {
    $.ajax({
        type : "GET",
        url : ajax_object.ajaxurl,
        data : { action : "ajax-get-latest-price" },
        success: function ( result ) {
            $(\'span.price\').html( result );
        }
    });
});
这适用于一个字段,但我需要在前端更新约10个字段,我知道为10个字段中的每个字段添加类似的PHP函数可以完成这项工作,但我认为这不是一种有效的方法。

我们可以使用get_post_meta( get_the_ID() ); 但是如何从那里开始并更新以下HTML标记。

<span class="price"></span>
<span class="exp-date"></span>
<span class="seller"></span>
<span class="location"></span>
...
<span class="item-10"></span>

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

要将数据从js传递回PHP,最简单的方法是使用json_encode 或者,在WP中,它的包装wp_send_json, wp_send_json_errorwp_send_json_success.

用法示例:

在PHP端

function get_latest_product_meta() {

    $post_id = (int) filter_input(INPUT_GET, \'post_id\', FILTER_SANITIZE_NUMBER_INT);
    $post_id or wp_send_json_error();

    // array_shift because when used like so `get_post_meta` return array of arrays...
    $data = array_map(\'array_shift\', get_post_meta($post_id));
    wp_send_json_success($data);
}
在js侧

$(document).ready( function() {
    $.ajax({
        type : "GET",
        url : ajax_object.ajaxurl,
        data : { action : "ajax-get-latest-price" },
        success: function ( result ) {
            if (result.error) {
               alert(\'Post not found!\');
            } else if(result.success) {
               $(\'span.price\').html( result.data.price );
               $(\'span.seller\').html( result.data.seller);
               // and so on....
            }
        }
    });
});

结束

相关推荐

调用wp_ajax_nopriv时的PHP会话

我正在尝试使用wordpress ajax调用api处理会话,但没有成功。在功能开始时。php写入:if (!session_id()) { session_start(); } 例如,在执行ajax调用以实现功能时add_action( \'wp_ajax_nopriv_compare_objects_request\', \'compare_objects_request\' ); “compare\\u objects\\u request”功能中的会话不