我正在尝试从数据库中获取自定义字段值并在页面上显示它们。我可以对单个自定义字段执行此操作,但不确定如何同时对多个值执行此操作。
这是我的函数,用于获取价格自定义字段的最新值。
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>
最合适的回答,由SO网友:gmazzap 整理而成
要将数据从js传递回PHP,最简单的方法是使用json_encode
或者,在WP中,它的包装wp_send_json
, wp_send_json_error
和wp_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....
}
}
});
});