Как создать дочерний плагин для WordPress
На самом деле я изменил некоторый код в WordPress Store Locator. Я хочу, чтобы он оставался, когда плагин будет обновляться. Поэтому я хочу создать дочерний плагин для этого. Любые идеи о том, как я мог бы справиться с этим?
2 ответа
Это варьируется от плагина к плагину, и иногда это даже невозможно, в других случаях плагины имеют документацию для легкого их расширения (например, WooCommerce и Gravity Forms). Некоторые из них создают Action Hooks с do_action()
что позволяет легко расширять функциональность. Типичным примером является обновление сообщения после того, как гравитационная форма отправлена с их gform_after_submission
крюк.
Фактически, это зависит от того, что вы хотите сделать, и от того, как плагин реализует функциональность, которую вы хотите изменить. Если они добавляют текст с помощью функции закрытия или анонимной функции, то будет сложнее изменить указанный текст, и вам, возможно, придется посмотреть на что-то странное, например, выполнить поиск и замену во время выполнения с использованием буферизации вывода, обычно в template_redirect
крюк.
Если вы хотите удалить то, что делает плагин, вы можете отсоединить его remove_action
, Это может быть немного сложно в зависимости от того, как создается плагин, иногда это так просто, как:
remove_action( 'some_hook', 'function_to_remove' );
В других случаях это сложнее, как:
global $plugin_class_var;
remove_action( 'some_hook', array($plugin_class_var, 'function_to_remove') );
Это основа расширения (или даже "сокращения") функциональности плагина, и это не всегда можно сделать соответствующим образом. К сожалению, узкий ответ на ваш вопрос выходит за рамки того, что мы можем предоставить от Stackru.
Отсюда вам необходимо выяснить, что именно вы хотите делать с плагином, и покопаться в файлах плагина, чтобы увидеть, есть ли подходящий хук или функция, которую вы можете использовать. Если вы все еще застряли, вам нужно будет опубликовать новый вопрос (не обновляйте этот) с вашим точным желаемым результатом и всем, что вы пробовали, и соответствующим кодом, который сопровождает его. "Я хочу изменить плагин, не редактируя файлы ядра", недостаточно конкретен. "Я хочу заменить значок на пользовательский значок в этом плагине, вот что я пробовал" - достаточно конкретно, чтобы ответить.
Удачи!
Я просто прошел через себя, и у меня было так много изменений, что я не мог просто отменить действия.
Я создал этот инструмент, который позволяет вам создавать дочерний плагин как дочернюю тему. Вы можете обновлять плагин и по-прежнему обновлять его, не теряя своих изменений.
Я публикую это здесь, потому что оно относится и, надеюсь, станет полезным для следующего человека, который столкнется с этой проблемой.
Согласно стандарту WordPress, это называется аддоном плагина.
если плагин предоставил какое-либо действие для обновления этой функциональности, то вы можете использовать его с вашим аддоном (дочерним плагином).
Здесь я отправляю ссылку для справки. https://developer.wordpress.org/reference/functions/add_action/