Eu tenho um plug-in e gostaria de poder executar o conteúdo da postagem através de alguns filtros antes de ser salvo no banco de dados. Observando a API do plug - in , vejo que dois ganchos que podem parecer úteis:
save_post
wp_insert_post
O único problema é que parece save_post
que não precisa retornar uma variável e, portanto, não sei como filtrar o conteúdo e wp_insert_post
parece documentado.
Eu gostaria de fazer algo assim:
add_action('whatever_hook_name','my_function');
function my_function($post_content){
return $post_content.' <br> This post was saved on '.time();
}
Vou fazer algo mais útil do que acrescentar um carimbo de data / hora, ou seja, executar alguns filtros regex, mas esse é o tipo geral de filtro / ação que estou tentando adicionar.
Atualizar
Observe que desejo interceptar os dados para salvá-los no banco de dados - não quando estiverem sendo exibidos na postagem (por exemplo: não adicionando um filtro a the_content
)
This post was...
"s 2. Os dados tais um presente devem ser armazenados como um valor meta do post :-) BTW:save_post
é chamado após dados foi salvo, portanto, depois que foi salvo no banco de dados (não o que você deseja).Respostas:
O filtro wp_insert_post_data pode fazer isso:
fonte
add_action
embora em vez deadd_filter
. também o seuwpse35931_filter_post_data
efilter_handler
são incongruentes ...wp_insert_post_data
funciona, mas está um pouco sobrecarregado com o que o OP (e talvez outros) deseja realizar. Uma opção mais simples nessa situação é acontent_save_pre
recomendada por @drzaus.wp_insert_post_data
filtro: developer.wordpress.org/reference/hooks/wp_insert_post_dataUse o filtro
content_save_pre
exatamente comothe_content
- a diferença é que ele funciona quando uma postagem é salva, em vez de exibida.http://codex.wordpress.org/Plugin_API/Filter_Reference/content_save_pre
fonte
Você também pode verificar o gancho
pre_post_update
fonte
Adicione o seguinte código para o tema ativo para substituir
<shell>
com[shell]
antes de salvar:fonte
Se você quiser adicionar algo semelhante no final de todas as postagens, sugiro que você use o
the_content
filtro.fonte