gowri
  • 0
Новичок

Как создать дочерний плагин WordPress

  • 0

Мне нравится создавать дочерний плагин.

Объяснение :-

У меня есть один родительский плагин с именем X. Он будет работать независимо (как и другие существующие плагины).

Теперь я решил добавить некоторые дополнительные функции в этот плагин X (считайте это обновлением). Поэтому я хочу создать дополнительные функции с помощью другого плагина Y, который будет зависеть (и наследоваться) от X.

Этот плагин Y не будет работать без плагина X.

Как я могу это сделать?

Share
  1. Лучший способ сделать это — создать свой X-плагин со своими собственными хуками для действий и фильтров, чтобы новые плагины (в вашем случае Y) могли взаимодействовать с функциями и данными плагина X. Определить свои собственные хуки довольно легко и просто.

    Крюк действия

    из кодекса:

    Действия — это хуки, которые ядро ​​WordPress запускает в определенные моменты во время выполнения или при возникновении определенных событий. Ваш плагин может указать, что одна или несколько его функций PHP выполняются в этих точках, используя API действий.

    пример нового хука действия:

    Function whatever(){
       //regular stuff you do normally 
      do_action('Name-Of-Your-Action-hook', $args1,$args2)
      //regular stuff you do normally
    }
    

    Теперь мы можем взаимодействовать с этой функцией и использовать ее аргументы ($args1,$args2), используя хук Name-Of-Your_hook.

    add_action('Name-Of-Your-Action-hook','hook_function_callback');
    

    Крюк фильтра

    из кодекса:

    Фильтры — это хуки, которые WordPress запускает для изменения текста различных типов перед его добавлением в базу данных или отправкой на экран браузера. Ваш плагин может указать, что одна или несколько его функций PHP выполняются для изменения определенных типов текста в это время, используя API фильтра.

    пример нового хука фильтра:

    Function whatever(){
       //regular stuff you do normally 
       $output = apply_filters('Name-Of-Your-Filter-hook', $output,$args1,$args2)
      //regular stuff you do normally
    }
    

    Теперь мы можем взаимодействовать с этой функцией, фильтровать использование $output и его аргументы ($args1,$args2) с помощью хука «Name-Of-Your-Filter-hook».

    add_filter('Name-Of-Your_hook','hook_function_callback');
    

    Хорошим примером этого может быть контактная форма 7.

    • Контактная форма 7 — надстройка для монитора кампаний
    • Контактная форма 7 Расширение динамического текста
    • Контактная форма 7 Календарь
    • Контактная форма 7 Textarea Wordcount
    • Контактная форма 7 Пользовательское поле в почте
    • Контактная форма 7 для расширения базы данных

    и многие другие, которые все (большинство) являются плагинами, расширяющими функциональность Contact Form 7 на основе ее хуков.

    • 0
    • Спасибо. Это очень подробное и хорошо написанное решение. Единственное, что я думаю, это то, что вы могли бы использовать более четкое имя для Function whatever() … все еще отличный ответ, СПАСИБО

      • 0
    • Я не думаю, что это хорошее решение, поскольку вся причина, по которой хотелось бы иметь дочерний плагин, а не модифицировать исходный плагин, заключается в том, что вам не нужно изменять исходный (или «родительский») плагин. Хуки в родительском плагине для расширяемости — это хорошо, но решение автора вопроса не могло полагаться на них. (…поскольку я и многие другие, безусловно, в одной лодке.)

      • 0
    • @Metagrapher OP указывает, что он хочет иметь возможность создавать дочерний плагин для плагина, так что это было больше о том, как спроектировать вещи, чтобы плагин мог расширяться с помощью дочерних плагинов.

      • 0
  2. Сделайте несколько хуков в родительском плагине, к которым дочерний плагин может прикрепить свою функцию. Также оберните дочерний плагин в if(function_exists('parent-plugin-function')) или class_exists, если это класс.

    • 0
  3. Я только что прошел через себя, и у меня было так много изменений, что я не мог просто отменить действия.

    Я создал этот инструмент, который позволяет вам создать дочерний плагин, например дочернюю тему. Вы можете вносить обновления в плагин и при этом обновлять его, не теряя своих изменений.

    Я публикую это здесь, потому что это связано и, надеюсь, станет полезным для следующего человека, который столкнется с этой проблемой.

    https://github.com/ThomasDepole/wordpress-child-plugin-tool

    • 0

Оставить ответ

You must login to add an answer.