O filtro wp_insert_post_data pode fazer isso:
add_filter( 'wp_insert_post_data' , 'filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
// Change post title
$data['post_title'] .= '_suffix';
return $data;
}
Eu tenho um plug-in e gostaria de poder executar o conteúdo da postagem por meio de alguns filtros antes que ele seja salvo no banco de dados. Ao olhar para a API do plug-in , vejo que dois ganchos parecem ser úteis:
save_post
wp_insert_post
O único problema é que parece que save_post
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 timestamp, ou seja, executar alguns filtros regex, mas esse é o tipo geral de filtro / ação que estou tentando adicionar.
Atualizar
Por favor, note que eu quero interceptar os dados em sua maneira de ser salvo no banco de dados - não quando ele está sendo exibido no post (por exemplo: Não adicionando um filtro para the_content
)
O filtro wp_insert_post_data pode fazer isso:
add_filter( 'wp_insert_post_data' , 'filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
// Change post title
$data['post_title'] .= '_suffix';
return $data;
}
adicione o seguinte código ao tema ativo.
Aqui estou substituindo por [shell] antes de salvar.
add_filter( 'content_save_pre' , 'my_sanitize_content' , 10, 1); function my_sanitize_content( $value ) { return str_replace("<shell>", "[shell]", $value ); }
Você também pode verificar o gancho pre_post_update
add_action('pre_post_update', 'before_data_is_saved_function');
function before_data_is_saved_function($post_id) {
}
Se você quiser apenas adicionar algo semelhante ao final de todas as postagens, sugiro usar o filtro the_content
.
function append_to_content( $content ) {
global $post;
return $content.'<br />This post was saved on '.$post->post_date;
}
add_filter( 'the_content', 'append_to_content' );