2017-05-29 143 views
2

我想替換核心WP函數wp_delete附件。在我的functions.php文件中,我添加了以下代碼:替換核心WordPress功能

add_action('init', 'remove_my_action'); 

function remove_my_action(){ 
    remove_action('delete_attachment', 'wp_delete_attachment'); 
    add_filter('delete_attachment','wp_delete_attachment',10,2); 
} 

And then the copy of the replaced function goes here with edited code. 

這不起作用。我收到錯誤:無法重新聲明wp_delete_attachment()。我已經嘗試了很多其他方法,但無法使其正常工作。

底線是我需要添加一些代碼到wp_delete_attachment函數的中間。如果我可以以某種方式用我的版本替換該函數,或者將代碼添加到現有函數中而不編輯wp-includes/post.php文件中的實際代碼(以便版本更新不會覆蓋我的代碼),我會感到滿意與任一。如何才能做到這一點?我通過問題找到的所有選項都沒有解決問題。謝謝!!

回答

1

您需要將您的副本wp_delete_attachment命名爲唯一的名稱。也許命名空間與您的網站名稱,如function my_site_wp_delete_attachment()

此外,我相信你需要使用add_action而不是add_filter

remove_action('delete_attachment', 'wp_delete_attachment'); 
add_action('delete_attachment', 'my_site_wp_delete_attachment'); 
+0

謝謝!!這讓我對我的解決方案! –

+0

我接受了這個答案,因爲它解決了'redeclare'問題,但似乎要替換的原始函數仍在運行。 –