我在woocommerce Products>General标签中添加了自定义字段。但是,我不会使用以下链接来响应这些自定义字段值:- http://yoursite.com/wp-json/wc/v2/products/
我的守则:-
//Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
//Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '' ;
//Purchasing Cost
woocommerce_wp_text_input(
array(
'id' => 'purchasing_cost',
'placeholder' => 'Purchasing Cost',
'label' => __('Purchasing Cost', 'woocommerce'),
'type' => 'text',
'show_in_rest' => true,
'rest_base' => 'products',
'rest_controller_class' => 'WP_REST_Products_Controller',
)
);
//OverHead
woocommerce_wp_text_input(
array(
'id' => 'overhead',
'placeholder' => 'Overhead',
'label' => __('Overhead', 'woocommerce'),
'type' => 'text',
'show_in_rest' => true,
'rest_base' => 'products',
'rest_controller_class' => 'WP_REST_Products_Controller',
)
);
echo '';
}
//To Save data
function woo_add_custom_general_fields_save($post_id) {
//Purchasing Cost
$woocommerce_purchasing_cost_field = $_POST['purchasing_cost'];
if (!empty($woocommerce_purchasing_cost_field))
update_post_meta($post_id, 'purchasing_cost', esc_attr($woocommerce_purchasing_cost_field));
//OverHead
$woocommerce_overhead_field = $_POST['overhead'];
if (!empty($woocommerce_overhead_field))
update_post_meta($post_id, 'overhead', esc_attr($woocommerce_overhead_field));
}提前谢谢。
发布于 2018-07-15 09:28:07
您应该将自定义字段添加到product响应中,尝试以下操作(未经测试)
add_filter( 'woocommerce_rest_prepare_product', 'custom_products_api_data', 90, 2 );
function custom_products_api_data( $response, $post ) {
// retrieve a custom field and add it to API response
$response->data['purchasing_cost'] = get_post_meta( $post->ID, 'purchasing_cost', true );
return $response;
}发布于 2018-07-16 06:48:05
回答我的问题
add_action( 'rest_api_init', 'slug_register_purchasing' );
function slug_register_purchasing() {
register_rest_field( 'product',
'purchasing_cost',
array(
'get_callback' => 'slug_get_purchasing_cost',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_purchasing_cost( $object, $field_name, $request ) {
return get_post_meta( $object[ 'id' ], $field_name, true );
}
add_action( 'rest_api_init', 'slug_register_overhead' );
function slug_register_overhead() {
register_rest_field( 'product',
'overhead',
array(
'get_callback' => 'slug_get_overhead',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_overhead( $object, $field_name, $request ) {
return get_post_meta( $object[ 'id' ], $field_name, true );
}有关详细说明,http://v2.wp-api.org/extending/modifying/
https://wordpress.stackexchange.com/questions/308591
复制相似问题