web-dev-qa-db-de.com

Fügen Sie einen benutzerdefinierten Post-Meta-Wert in den abgerufenen JSON ein

Ich habe einen benutzerdefinierten Beitragstyp note und kann die Beiträge einfach mit der WP REST-API abrufen:

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

Funktioniert gut! Aber in der JSON-Zeichenfolge soll der Wert der benutzerdefinierten Post-Meta hello_world enthalten sein. Zum Beispiel:

"hello_world": "value...",

Was kann ich tun, damit JSON dieses benutzerdefinierte Post-Meta enthält?

4
Toby

Zwei Dinge zu beachten: 1) register_meta() 2) Unterstützung von benutzerdefinierten Feldern für den Beitragstyp.

1) register_meta

Sie können Ihr benutzerdefiniertes Post-Meta mit show_in_rest => true registrieren, um es über die API zugänglich zu machen. Unten auf dieser Seite: Antworten ändern , enthält das folgende Beispiel:

<?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) Unterstützung für benutzerdefinierte Felder

Auf der obigen Seite wird erwähnt, dass Ihr CPT benutzerdefinierte Felder Unterstützung haben muss, damit es in der Antwort angezeigt wird.

Fügen Sie custom-fields zum Unterstützungsarray 'supports' => array('title','editor','thumbnail','custom-fields') im Array $ args hinzu, wenn Sie den Post-Typ registrieren.


Im Rahmen einer CPT-Registrierung habe ich es als letzten Eintrag in die letzte Zeile des $ args-Arrays eingefügt.

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