Jeśli dopiero zaczynasz pisać wtyczki do edytora bloków WordPress (Gutenberg), być może szukasz sposobu, aby uzyskać meta bieżącego postu za pomocą get_post_meta.
Nie bój się, nadal możesz get_post_meta, po prostu użyj getEditedPostAttribute('meta')w bieżącym poście, aby uzyskać całą meta, na przykład:
const meta = wp.data.select('core/editor').getEditedPostAttribute('meta');
Tak długo, jak udostępniłeś swój klucz meta w pozostałym interfejsie API, możesz teraz pobrać go ze metazmiennej.
const meta = wp.data.select('core/editor').getEditedPostAttribute('meta');
const metaExample = meta['wholesomecode_meta_key_example'];
W powyższym kodzie łapię wartość mojego post meta( wholesomecode_meta_key_example) i przekazuję ją do zmiennej metaExample.
Aby upewnić się, że meta posta jest dostępna w Gutenberg, musisz ją zarejestrować i upewnić się, że show_in_restjest ustawiona na true.
add_action( 'init', 'register_meta');
function register_meta() {
register_post_meta(
'post',
'wholesomecode_meta_key_example',
[
'show_in_rest' => true,
'single' => true,
'type' => 'string',
]
);
}
Pobierz Meta z innego identyfikatora posta
Jeśli chcesz uzyskać meta postu innego posta, możesz użyć getEntityRecord, i przekazać mu identyfikator posta posta, który chcesz uzyskać:
const {meta} = wp.data.select('core').getEntityRecord('postType', 'post', 42);
W powyższym przykładzie cała meta dla posta (pod warunkiem, że została zarejestrowana) znajduje się teraz w metazmiennej.
Używanie getEntityRecordjest równoznaczne z wykonaniem get_post w Gutenbergu.
Wypróbuj w konsoli
Zaloguj się do swojej witryny i użyj wpobiektu w konsoli podczas edytowania posta, aby wypróbować go samodzielnie. Powinieneś otrzymać łatwy w obsłudze obiekt JSON meta postu:
wp.data.select('core/editor').getEditedPostAttribute('meta');
{
wholesomecode_meta_key_example: 'Example',
}
Aktualizowanie meta postu
Jeśli chcesz zaktualizować meta postu z poziomu WordPress Gutenberg, możesz to zrobić za pomocą editPostieditEntityRecord.