Подтвердить что ты не робот

WordPress - переопределение функции в плагине

Я уже давно удивляюсь, что лучше всего подходит для модификации плагина, созданного пользователем WordPress?

Например, есть пара строк кода, которые я хочу изменить в плагине Contact Form 7. Эта функция называется функцией wpcf7_ajax_json_echo() и расположена в:

wp-content > plugins > contact-form-7 > includes > controller.php

Конечно, я мог бы просто изменить код в этом файле и сделать это, но тогда мне не повезло, когда я хочу обновить этот плагин, так как мои модификации, вероятно, будут записаны.

Я знаю, что это должно произойти с помощью моего файла functions.php, но я не уверен, как это сделать. Кроме того, эта конкретная функция представляет собой 100 строк кода, и я предполагаю, что не хочу переписывать эту целую функцию, потому что есть хороший шанс, что автор плагина может в будущем что-то обновить в этой функции.

Кто-нибудь знает самый чистый способ изменить несколько строк внутри этой функции через мой файл functions.php?

Спасибо!

4b9b3361

Ответ 1

Я не рекомендую менять ядро. Однако у вас немного рассол.

Вы можете:

  • Обновить код функции непосредственно в плагине
  • Скопируйте текущий код функции из плагина и переопределите его в functions.php

В конце концов, вы все равно сталкиваетесь с той же проблемой - будущей совместимостью.

Или:

  • Обновление перезапишет ваши изменения плагина.
  • Ваша функция перезаписывает изменения плагина.

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

Ответ 2

Вы можете использовать SVN, если хотите поддерживать передовую совместимость (и ваш хост имеет доступ к SVN), сохраняя свои собственные изменения.

Каждый плагин, который в каталоге плагинов должен иметь репо SVN (то, как Directory знает, есть ли обновления). Здесь репозиторий CF7.

Оформить багаж в каталог/plugins/внутри папки, например /custom -contact-form-7/. Измените файл wp-contact-form-7.php, чтобы дать ему уникальное имя, и внесите изменения, которые вы хотите настроить, чтобы настроить его.

Чтобы получить новые обновления, вы можете просто svn up получить их, и они будут слиты с вашими изменениями. Хотя иногда вам иногда приходится иногда очищать конфликты слияния.

Контроль версий с Subversion - это место, где все начинают изучать SVN, если вам это нужно. Там также Github repo теперь, если вы хотите его разблокировать.

Ответ 3

Я определенно думаю, что вы должны добавить свои обновления в functions.php или в собственный плагин. Это хлопот прямо сейчас, но МНОГО меньше хлопот каждый раз, когда вы обновляете плагин.

Вам всегда нужно ссылаться на изменения, внесенные в обновления, независимо от того, что. Даже если вы сможете расширить функциональность без копирования этого файла, вам придется, по крайней мере, проверить и убедиться, что ваши изменения все еще работают. И сравнение WinDiff/BBEdit быстро справится с этим.

Итак, мое первое предложение - переопределить эту функцию.

Второе предложение: Я заметил там некоторые расширения (< a href= " "rel=" nofollow" > a, b, c) к этому плагину; возможно, вы можете узнать, как они сделали свои расширения и использовать эти детали, чтобы сделать свой собственный. Ну, это похоже на предложение сделать новый дом, чтобы исправить капающий кран, но это идея.