it-swarm-eu.dev

Jak mohu upravit data příspěvku před uložením?

Mám plugin a chtěl bych být schopen spustit obsah příspěvku prostřednictvím některých filtrů před tím, než bude uložen do databáze. Z pohledu plugin api , vidím, že dva háčky, které vypadají, že by mohly být užitečné:

save_post
wp_insert_post

Jediný problém je, že to vypadá, že save_post nepotřebuje vrátit proměnnou, a tak nevím, jak filtrovat obsah, a wp_insert_post vypadá zdokumentováno.

Chci něco takového udělat:

add_action('whatever_hook_name','my_function');

function my_function($post_content){
    return $post_content.' <br> This post was saved on '.time();
}

Udělám něco užitečnějšího, než připojit časové razítko, konkrétně spustit některé regex filtry, ale toto je obecný typ filtru/akce, kterou se snažím přidat.

Aktualizovat

Vezměte prosím na vědomí, že chci zachytit data o tom, jak se ukládají do databáze - ne když se zobrazují v příspěvku (např .: Ne přidáním filtru do the_content)

17
cwd

Filtr wp_insert_post_data filter to může udělat:

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;
}
25
Anh Tran

Použijte filtr content_save_pre přesně jako the_content - rozdíl je v tom, že funguje, když je příspěvek uložen, spíše než zobrazen.

http://codex.wordpress.org/Plugin_API/Filter_Reference/content_save_pre

6
drzaus

Můžete také zkontrolovat háček pre_post_update

add_action('pre_post_update', 'before_data_is_saved_function');

function before_data_is_saved_function($post_id) {

}
2
user28231

Chcete-li nahradit <Shell>[Shell] před uložením, přidejte následující kód do aktivního motivu:

 add_filter('content_save_pre', 'my_sanitize_content', 10, 1);
 function my_sanitize_content($value) {
   return str_replace('<Shell>', '[Shell]', $value);
 }
1
Suyash Jain

Pokud chcete přidat něco podobného na konci všech příspěvků, doporučuji použít filtr 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' );
0
Joshua Abenazer