我目前正在使用JSON REST API (WP API)插件来获取我的帖子和页面数据。
我注意到我的自定义字段数据都没有在json中返回,并且查看路径,我认为我无法获得这些数据。
通过当前插件的任何想法,或者我怎么能做到这一点呢?
答案 0 :(得分:1)
如果您使用的是“高级自定义字段” - 在确定更正式的字段之前,您可以使用此插件:https://github.com/times/acf-to-wp-api(现在也可以在标准的wp插件区域中使用。)
它将在json结构中包含acf: [],
下的自定义字段。
答案 1 :(得分:1)
您需要在
中创建此文件包含以下代码可湿性粉剂内容\主题\名\ INC \功能
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
/*
* init function
*/
if ( ! function_exists( 'mnu_rest_init' ) ) {
function mnu_rest_init() {
register_rest_route( 'guider/v1', '/booking', array(
'methods' => 'GET',
'callback' => 'handle_get_all',
'permission_callback' => function () {
return current_user_can( 'edit_others_posts' );
}
) );
register_rest_route( 'guider/v1', '/booking', array(
'methods' => 'POST',
'callback' => 'handle_post_booking',
'permission_callback' => function () {
return current_user_can( 'edit_others_posts' );
}
) );
}
}
//GET QUERY PARMS
function handle_get_all( $request_data) {
$parameters = $request_data->get_params();
$userId = $parameters["Id"];
global $wpdb;
$query = "SELECT * FROM `wp_trav_tour_bookings` WHERE `user_id` = $userId";
$list = $wpdb->get_results($query);
return $list;
}
// GET BODY PARMS
function handle_post_booking( $request_data) {
$parameters = $request_data->get_body();
$params = json_decode( $parameters , true );
// $userId = $parameters["Id"];
// global $wpdb;
// $query = "SELECT * FROM `wp_trav_tour_bookings` WHERE `user_id` = $userId";
// $list = $wpdb->get_results($query);
return $params ;
}
然后你需要添加
//actions
add_action( 'rest_api_init', 'mnu_rest_init');
到
中的main.php可湿性粉剂内容\主题\名\ INC \功能
要做到这一点,你需要将此文件发送到main.php
require_once dirname( __FILE__ ) . '/filename.php';
答案 2 :(得分:0)
您可以操作响应并将自定义字段添加到JSON。我在我的示例中使用了高级自定义字段,但您可以在返回数据对象之前添加任何键/值对。
// In functions.php
function modify_rest_post( $data, $post, $request ) {
if (is_admin()) {
return $data;
}
$data->my_favorite_data = get_field('my_custom_field', $post->ID);
return $data;
}
add_filter( 'rest_prepare_post', 'modify_rest_post', 10, 3 );
答案 3 :(得分:0)
要仅使用本机WP函数获取自定义字段值,请将以下内容添加到functions.php
中function my_rest_prepare_post( $data, $post, $request ) {
$_data = $data->data;
$_data[$field] = get_post_meta( $post->ID, 'my_custom_field_key', true );
$data->data = $_data;
return $data;
}
add_filter( 'rest_prepare_post', 'my_rest_prepare_post', 10, 3 );
将'my_custom_field_key'
替换为您的自定义字段键名称。
对于多个字段:
function my_rest_prepare_post( $data, $post, $request ) {
$_data = $data->data;
// My custom fields that I want to include in the WP API v2 responce
$fields = ['writer', 'publisher', 'year', 'youtube_link'];
foreach ( $fields as $field ) {
$_data[$field] = get_post_meta( $post->ID, $field, true );
}
$data->data = $_data;
return $data;
}
add_filter( 'rest_prepare_post', 'my_rest_prepare_post', 10, 3 );