我可以使用API和JS ajax函数来获取这两个值吗?
是的,当然。
Step 1: (PHP) 注册自定义字段(即将它们添加到WordPress REST API响应中Posts)
register_meta( \'post\', \'address1\', [
\'type\' => \'string\', // string/boolean/integer/number
\'single\' => true,
\'show_in_rest\' => true,
] );
register_meta( \'post\', \'address2\', [
\'type\' => \'string\',
\'single\' => true,
\'show_in_rest\' => true,
] );
请参见
Modifying Responses | REST API Handbook 和
register_meta()
.
Step 2 (PHP): 加载官方客户端/JS库
add_action( \'wp_enqueue_scripts\', function(){
wp_enqueue_script( \'wp-api\' );
} );
请参见
Backbone JavaScript Client | REST API Handbook.
Step 3: 添加JS代码
…这很简单,如下所示:(请参考您的问题postId
变量)
var post = new wp.api.models.Post( { id: postId } );
post.fetch().done( function(){
// Use `post.getMeta( \'KEY\' )` to retrieve the meta value.
alert( post.getMeta( \'address1\' ) );
alert( post.getMeta( \'address2\' ) );
} );
请参见
https://developer.wordpress.org/rest-api/using-the-rest-api/backbone-javascript-client/#model-examples ..
<小时>UPDATE: 替代wp-api
剧本
如果您不想使用官方客户端/JS库,或者只想使用一个简单的jQuery脚本,那么。。。
Step 2:
Don\'t queue/load the wp-api
script.
在页面的某个地方添加此项:
(可以更改变量名,但请确保在步骤3中也更改JS代码中的变量名)<script>
var restApiSettings = {
nonce: \'<?= wp_create_nonce( \'wp_rest\' ) ?>\',
root: \'<?= esc_url_raw( rest_url( \'wp/v2\' ) ) ?>\'
};
</script>
或者使用PHP/WordPress,使用
wp_localize_script()
就像官方客户端/JS库那样。
wp_localize_script( \'your-script\', \'restApiSettings\', [
\'root\' => esc_url_raw( rest_url( \'wp/v2\' ) ),
\'nonce\' => wp_create_nonce( \'wp_rest\' )
] );
Step 3: JS/jQuery代码:
jQuery.get( restApiSettings.root + \'/posts/\' + postId, {
_wpnonce: restApiSettings.nonce
}, function( res ){
if ( res.meta ) {
alert( res.meta.address1 );
alert( res.meta.address2 );
}
} );