2014-07-24 69 views
0

這裏是我是如何實現的吧:WordPress的delete_post掛鉤調用函數兩次

add_action('delete_post', array('MyClassName', 'delete')); 

在刪除功能我使用的是$ wpdb-> insert命令看該功能是否被調用。但是我看到$ wpdb-> insert命令被調用兩次(在我的表中插入兩行)。任何想法爲什麼這樣的事情可能會發生?

我還試圖使用before_delete_post掛鉤,因爲它並沒有真正讓我有差別,但我得到了相同的結果。

編輯:

它好像刪除功能被調用由於某種原因在wp_posts表中的每個條目。因此,如果該帖子有3個修訂版本,刪除功能將被調用4次(原始帖子+ 3個修訂版)。這真是奇怪的行爲。

回答

0

我找到了我的解決方案。

的功能給你提供最基本delete_post(或者可能是任何其他類似鉤)根據需要執行多次。考慮到delete_post需要刪除帖子及其所有修訂版本,它會一直運行多次。爲了避免你的函數執行每個WordPress的將刪除您可以使用did_action($鉤)數據庫中的記錄時間。該函數返回鉤子執行的次數。

if (did_action('delete_post') === 1) 
{ 
    // execute code here 
} 
:有了這個考慮,我們可以通過把這個條件到我們的功能解決我們多次執行問題