O gancho de ação save_post
é chamado ao salvar, mas não sei se você pode adicionar metadados no momento. Mas deve ser possível criar / atualizar seus metadados depois que a postagem foi salva com o gancho de ação updated_post_meta
.
EDITAR
Para pré-selecionar alguns meta-campos (campos personalizados) na tela de pós-criação, você deve adicionar esses valores meta primeiro com um valor vazio.
Se você observar a função post_custom_meta_box()
(que é o retorno de chamada para o metabox usado postcustom
) no arquivo wp-admin/includes/meta-boxes.php
, poderá ver que a função está usando list_meta()
para criar o meta pré-selecionado campos.
Agora vamos dar uma olhada no fluxo do programa até que este metabox seja exibido (estamos procurando por um gancho de ação / filtro que possamos usar aqui):
- o WordPress carrega o arquivo
post-new.php
- Esse arquivo gera uma postagem padrão no banco de dados na linha
39
com a funçãoget_default_post_to_edit()
. Isso é bom. Basicamente, o post já está no banco de dados como um rascunho automático. Infelizmente, não há nenhum gancho neste momento para alterar esses dados ou adicionar algo novo. - Como próximo passo, o arquivo
edit-form-advaned.php
é incluído. Esse arquivo gerará a página de administração do furo e incluirá todos os metaboxes necessários com base no parâmetrosupports
do tipo de postagem. - Na linha
136
, os campos personalizados metaboxpostcustom
estão incluídos e a função acima é chamada. Mais uma vez, nenhum gancho de ação que pudéssemos usar.
Conclusão
Eu acho que a única maneira que você pode fazer é usar jQuery ou sobrecarregar o postcustom
metabox e adicionar os meta valores antes de executar a função list_meta()
.
Por exemplo,
add_action('admin_menu', 'wpse29358_replaceMetaBoxes'); // maybe add_meta_boxes hook
function wpse29358_replaceMetaBoxes() {
remove_meta_box('postcustom', {POST_TYPE}, 'normal');
add_meta_box('postcustom', __('Custom Fields'), 'wpse29358_postcustomMetabox', {POST_TYPE}, 'normal', 'core');
}
function wpse29358_postcustomMetabox($post) {
// Add your meta data to the post with the ID $post->ID
add_post_meta($post->ID, 'key', 'value');
// and then copy&past the metabox content from the function post_custom_meta_box()
}