データベースからカスタムフィールドの値を取得してページに表示しようとしています。私は単一のカスタムフィールドでそれを行うことができますが、一度に複数の値でそれを行う方法がわからない。
これが価格カスタムフィールドの最新の値を取得するための私の関数です。
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 );
}
});
});
これは1つのフィールドでも動作しますが、フロントエンドで〜10のフィールドを更新する必要があります。10の各フィールドに同様のPHP関数を追加するとうまくいくことはわかっています。それ。
get_post_meta( get_the_ID() );
を使用してPHP配列内のすべてのメタキーを取得できますが、そこから移動して次のHTMLタグを更新する方法を説明します。
<span class="price"></span>
<span class="exp-date"></span>
<span class="seller"></span>
<span class="location"></span>
...
<span class="item-10"></span>
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....
}
}
});
});