Как переопределить существующее действие плагина новым действием

18

Я использую плагин. У него есть действие, подобное этому.

add_action('publish_post', 'old_action');
function old_action($pid) {
    "code goes here"
    }
}

Я пишу модуль для этого плагина. Поэтому мне нужно переопределить эту старую функцию действия с моей новой функцией действия.

Это моя новая функция.

function new_action($pid) {
      "code goes here"
        }
    }

Я хочу заменить эту функцию old_action моей функцией new_action с помощью хуков. Может кто-нибудь мне помочь?

Благодарность

Гири
источник

Ответы:

33

Вы можете использовать remove_action()функцию, например так:

remove_action('publish_post', 'old_action');
add_action('publish_post', 'new_action');

Важно отметить, что если old_action было добавлено с параметром приоритета, вы должны добавить это к remove_actionвызову, иначе он не сможет удалить его. Существуют и другие последствия, если old_action было добавлено в класс. Смотрите здесь для получения дополнительной информации.

Томас Бутелер
источник
3
+1 с пояснением, что действие удаления должно вызываться после добавления функции удаления.
Стивен Харрис
2
'after_setup_theme' кажется хорошим местом для remove_action. См .: wordpress.stackexchange.com/questions/170663/…
DigitalDesignDj