web-dev-qa-db-fra.com

Inclure une méta valeur personnalisée dans le code JSON récupéré

J'ai un type de message personnalisé note et je peux facilement récupérer les messages à l'aide de WP REST API:

http://example.com/wp-json/wp/v2/note

Fonctionne bien! Mais dans la chaîne JSON, je souhaite qu’il inclue la valeur de la méta de publication personnalisée nommée hello_world. Par exemple:

"hello_world": "value...",

Que puis-je faire pour que le JSON inclue cette méta de publication personnalisée?

4
Toby

Deux points à examiner: 1) register_meta() 2) prise en charge des champs personnalisés sur le type de publication.

1) register_meta

Vous pouvez enregistrer votre méta de poste personnalisé avec show_in_rest => true pour le rendre accessible via l’API. En bas de cette page: Modification des réponses , fournit l'exemple suivant:

<?php
// The object type. For custom post types, this is 'post';
// for custom comment types, this is 'comment'. For user meta,
// this is 'user'.
$object_type = 'post';
$args1 = array( // Validate and sanitize the meta value.
    // Note: currently (4.7) one of 'string', 'boolean', 'integer',
    // 'number' must be used as 'type'. The default is 'string'.
    'type'         => 'string',
    // Shown in the schema for the meta key.
    'description'  => 'A meta key associated with a string meta value.',
    // Return a single value of the type.
    'single'       => true,
    // Show in the WP REST API response. Default: false.
    'show_in_rest' => true,
);
register_meta( $object_type, 'my_meta_key', $args1 );

2) support des champs personnalisés

La page ci-dessus indique que votre CPT doit disposer de custom-fields support pour pouvoir apparaître dans la réponse.

Ajoutez custom-fields au tableau de supports 'supports' => array('title','editor','thumbnail','custom-fields') dans le tableau $ args lors de l'enregistrement du type de publication.


Dans le contexte d'une inscription CPT, je l'ai ajouté comme dernier élément de la dernière ligne du tableau $ args.

add_action( 'init', 'codex_book_init' );
/**
 * Register a book post type.
 *
 * @link http://codex.wordpress.org/Function_Reference/register_post_type
 */
function codex_book_init() {
    $labels = array(
        'name'               => _x( 'Books', 'post type general name', 'your-plugin-textdomain' ),
        'singular_name'      => _x( 'Book', 'post type singular name', 'your-plugin-textdomain' ),
        'menu_name'          => _x( 'Books', 'admin menu', 'your-plugin-textdomain' ),
        'name_admin_bar'     => _x( 'Book', 'add new on admin bar', 'your-plugin-textdomain' ),
        'add_new'            => _x( 'Add New', 'book', 'your-plugin-textdomain' ),
        'add_new_item'       => __( 'Add New Book', 'your-plugin-textdomain' ),
        'new_item'           => __( 'New Book', 'your-plugin-textdomain' ),
        'edit_item'          => __( 'Edit Book', 'your-plugin-textdomain' ),
        'view_item'          => __( 'View Book', 'your-plugin-textdomain' ),
        'all_items'          => __( 'All Books', 'your-plugin-textdomain' ),
        'search_items'       => __( 'Search Books', 'your-plugin-textdomain' ),
        'parent_item_colon'  => __( 'Parent Books:', 'your-plugin-textdomain' ),
        'not_found'          => __( 'No books found.', 'your-plugin-textdomain' ),
        'not_found_in_trash' => __( 'No books found in Trash.', 'your-plugin-textdomain' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => __( 'Description.', 'your-plugin-textdomain' ),
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'book' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 
                                     'title', 
                                     'editor', 
                                     'author', 
                                     'thumbnail', 
                                     'excerpt', 
                                     'comments',
                                     'custom-fields' 
                                     )
        );

    register_post_type( 'book', $args );
}
2
hwl