Как получить пользовательский мета-пост в wp media js - PullRequest
1 голос
/ 11 октября 2019

У меня есть пользовательский тип записи, и на экране редактирования сообщения администратора я использую wp.media, чтобы прикрепить трек к записи. И я прикрепляю к этой дорожке также некоторые мета-записи.
Есть ли простой способ заставить трек wp.media JS возвращать метаданные?

trackMediaUploader = wp.media.frames.file_frame = wp.media( { ... } );

trackMediaUploader.on( 'select', () => {
  const attachment = trackMediaUploader.state().get( 'selection' ).first().toJSON();
  // want to get post meta of this attachment
  console.log( attachment );
});

Я пытался использовать фильтр wp_get_attachment_metadata, но он не работает с wp.media js:

function add_attachment_metadata( $data, $id ) {
    $lyrics = get_post_meta( $id, '_track_lyrics', true );
    if( $lyrics ) {
        $data[ 'track-lyrics' ] = $lyrics;
    }
    return $data;
}

1 Ответ

0 голосов
/ 12 октября 2019

Вы можете использовать wp_prepare_attachment_for_js hook:

add_filter( 'wp_prepare_attachment_for_js', 'prepare_attachment_for_js', 10, 3 );

function prepare_attachment_for_js(  $response, $attachment, $meta ) {
    $response[ 'trackLyrics' ] = get_post_meta( $attachment->ID, '_track_lyrics', true );
    return $response;
}
// in admin js: 
trackMediaUploader = wp.media.frames.file_frame = wp.media( { ... } );

trackMediaUploader.on( 'select', () => {
  const attachment = trackMediaUploader.state().get( 'selection' ).first().toJSON();
  console.log( attachment.trackLyrics );
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...