問題描述

我有一個外掛,我希望能夠在儲存到資料庫之前透過一些過濾器來執行該帖子內容。從檢視 plugin api,我看到兩個看起來像這樣可能有幫助的鉤子:

save_post
wp_insert_post

唯一的問題是它看起來像 save_post 不需要返回一個變數,所以我不知道如何過濾內容,而 wp_insert_post 看起來檔案。

我想做這樣的事情:

add_action('whatever_hook_name','my_function');

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

我會做一些比追加時間戳更有用的東西,即執行一些正規表示式過濾器,但這是我要新增的過濾器/操作的一般型別。

更新

請注意,我想擷取資料儲存在資料庫中的資料,而不是當它顯示在帖子中 (例如:不透過向 the_content 新增過濾器)

最佳解決方案

wp_insert_post_data 濾波器可以做到這一點:

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;
}

次佳解決方案

使用過濾器 content_save_pre 完全像 the_content – 不同之處在於,當儲存檔案時,它不會顯示。

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

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。