как я могу зарегистрировать мета-поле post в существующем CPT, а затем снова вызвать его с помощью get post custom()?
Я хотел бы добавить поле post_meta (test_meta_1234) в существующий CPT (органайзер) внешнего плагина.
С register_meta() это не работает. Но таксономию я могу добавить в тот же CPT с помощью register_taxonomy().
Пример кода:
register_meta('post', 'test_meta_1234', array(
'object_subtype' => 'organizer',
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'description' => 'Test Meta 1234',
)
);
register_taxonomy(
'genre',
'organizer',
array(
'label' => __( 'Genre' ),
'rewrite' => array( 'slug' => 'genre' ),
'hierarchical' => true,
)
);
$otherPostTypesFull = new stdClass();
$otherPostTypes = get_post_types();
foreach($otherPostTypes as $postType => $postTypeSlug){
$args = array(
'post_type' => $postTypeSlug,
'numberposts' => -1
);
foreach(get_posts( $args ) as $faPosts){
$otherPostTypesFull->$postTypeSlug->post_meta = get_post_custom($faPosts->ID);
$otherPostTypesFull->$postTypeSlug->taxonomies = get_object_taxonomies( $postTypeSlug, 'objects' );
}
}
var_dump($otherPostTypesFull);
Таксономия добавляется в CPT, но не в post_meta (test_meta_1234).
Почему я не могу увидеть поле post_meta с помощью get_post_custom()?
Обновление 1:
КПП не сделал поддержка "настраиваемых полей", поэтому теперь сначала проверьте и добавьте это:
`if(!post_type_supports( 'organizer', 'custom-fields' )){
add_post_type_support( 'organizer', 'custom-fields' );
}`
Пользовательское поле "test_meta_1234" все еще не зарегистрировано. Почему это?
2 answers
Вероятно, будет намного проще просто использовать https://wordpress.org/plugins/advanced-custom-fields/
Если нет, проверьте этот пост , который указывает вам на эту страницу
Пользовательские поля (post_meta) не могут быть зарегистрированы.
Register_meta работает только в сочетании с API REST.