2011-03-29 51 views
0

我試圖添加一個content_save_pre過濾器來根據內容中的文本更新自定義字段,例如[something] Thing [/ something]會告訴插件將自定義字段設置爲「Thing」。從一個過濾器中獲取WordPress發帖ID

我的代碼(如下)在通過Web界面發佈時工作正常,但在我嘗試過的客戶端(MarsEdit和WordPress iOS)上失敗,並且出現「Press This」書籤。 []標記被刪除,但自定義字段未被設置。

function dfll_get_link($post_content) { 
    $dflink = dfll_find_link($post_content); 
    if ($dflink) { 
    global $post; 
    $post_id = $post->ID; 
    update_post_meta($post_id, 'linked_list_url', $dflink); 
    } 
    $temp = '/(' . dfll_regesc('[ll]') . '(.*?)' . dfll_regesc('[/ll]') . ')/i'; 
    $post_content = (preg_replace($temp, '', $post_content)); 
    return $post_content; 
} 

add_filter('content_save_pre', 'dfll_get_link'); 

從一些測試看來,$ post_id變量似乎沒有被設置。有沒有辦法在這些情況下獲得帖子ID?或者我應該嘗試添加過濾器到不同的鉤子? (儘管如此,我想不出任何適合。)

+0

本身並不是一個解決方案,但您可以嘗試此修補程序:http://core.trac.wordpress.org/ticket/15515 – windyjonas 2011-03-29 08:13:23

回答

0

找到了解決方案,使用Justin Blanton的CF Setter插件。提取信息並將其存儲爲全局信息,然後將該設置作爲save_post的操作應用。

+0

您可以擴展解決方案嗎? – 2011-08-16 18:47:01

+0

作者不是直接應用過濾器,而是將這些信息存儲在一個全局變量中,並將其作爲一個動作來使用。看看CF Setter插件源代碼,因爲它確實是我需要的。 – yjsoon 2011-08-24 23:48:58