Мне нравится создавать дочерний плагин.
Объяснение :-
У меня есть один родительский плагин с именем X. Он будет работать независимо (как и другие существующие плагины).
Теперь я решил добавить некоторые дополнительные функции в этот плагин X (считайте это обновлением). Поэтому я хочу создать дополнительные функции с помощью другого плагина Y, который будет зависеть (и наследоваться) от X.
Этот плагин Y не будет работать без плагина X.
Как я могу это сделать?
Лучший способ сделать это — создать свой X-плагин со своими собственными хуками для действий и фильтров, чтобы новые плагины (в вашем случае Y) могли взаимодействовать с функциями и данными плагина X. Определить свои собственные хуки довольно легко и просто.
Крюк действия
из кодекса:
пример нового хука действия:
Теперь мы можем взаимодействовать с этой функцией и использовать ее аргументы ($args1,$args2), используя хук Name-Of-Your_hook.
Крюк фильтра
из кодекса:
пример нового хука фильтра:
Теперь мы можем взаимодействовать с этой функцией, фильтровать использование $output и его аргументы ($args1,$args2) с помощью хука «Name-Of-Your-Filter-hook».
Хорошим примером этого может быть контактная форма 7.
и многие другие, которые все (большинство) являются плагинами, расширяющими функциональность Contact Form 7 на основе ее хуков.
Спасибо. Это очень подробное и хорошо написанное решение. Единственное, что я думаю, это то, что вы могли бы использовать более четкое имя для
Function whatever()
… все еще отличный ответ, СПАСИБОЯ не думаю, что это хорошее решение, поскольку вся причина, по которой хотелось бы иметь дочерний плагин, а не модифицировать исходный плагин, заключается в том, что вам не нужно изменять исходный (или «родительский») плагин. Хуки в родительском плагине для расширяемости — это хорошо, но решение автора вопроса не могло полагаться на них. (…поскольку я и многие другие, безусловно, в одной лодке.)
@Metagrapher OP указывает, что он хочет иметь возможность создавать дочерний плагин для плагина, так что это было больше о том, как спроектировать вещи, чтобы плагин мог расширяться с помощью дочерних плагинов.
Сделайте несколько хуков в родительском плагине, к которым дочерний плагин может прикрепить свою функцию. Также оберните дочерний плагин в
if(function_exists('parent-plugin-function'))
илиclass_exists
, если это класс.Я только что прошел через себя, и у меня было так много изменений, что я не мог просто отменить действия.
Я создал этот инструмент, который позволяет вам создать дочерний плагин, например дочернюю тему. Вы можете вносить обновления в плагин и при этом обновлять его, не теряя своих изменений.
Я публикую это здесь, потому что это связано и, надеюсь, станет полезным для следующего человека, который столкнется с этой проблемой.
https://github.com/ThomasDepole/wordpress-child-plugin-tool