Intereting Posts
Почему моя настраиваемая боковая панель всегда открывается на экране виджетов в Admin? Объединение сообщений WordPress из разных баз данных Имеете две разные версии одного и того же поста? Как я могу отобразить имя группы buddypress в header.php, чтобы оно показывалось при просмотре каждой отдельной группы? массовые действия wp_list_tables Как я могу сделать свои параметры в массиве и сохранить тему в параметрах WP одной строки DB? Несколько входов в элементе управления Customizer проблемы с слайдером – расследование с помощью firebug Как я могу получить предполагаемый URL-адрес в 404? Отфильтровать сообщения по пользовательским полям и показать их на новой странице single.php – как пометить текущую страницу в цикле Предупреждение: array_pop () ожидает, что параметр 1 будет массивом, boolean Как изменить образ от тайного пользователя по умолчанию на странице профиля WP Рекомендуемое изображение не отображается, когда публикация размещена на Facebook Плагины и резервное копирование не работают корректно на новом сервере Digital Ocean

Правильно ли редактировать уже существующий плагин, чтобы добавить больше функциональности?

Мне нужно добавить относительно небольшой бит функциональности для плагина WordPress, и у меня есть возможность либо отредактировать плагин напрямую, либо полностью отказаться от плагина, либо перефразировать PHP-код с другого сайта, чтобы сделать то же самое. Повторение не-Wordpress PHP-кода для таких небольших изменений кажется глупым, и у меня есть несколько строк PHP, которые я использовал бы при редактировании плагина. Мой вопрос: правильно ли редактировать плагин?

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

Для тех, кто задается вопросом, насколько сложны изменения, я кратко объясню. Клиент, которому я хочу, должен подать форму, чтобы обратиться к дилеру и пользователю. Но при определенных обстоятельствах в зависимости от адреса электронной почты пользователя (если он заканчивается на «.gov» или на нескольких других концах … да, я знаю, что это не лучшая идея, и я пытался убедить клиента, но они были непреклонны) клиент хочет, чтобы письмо было отправлено кому-то другому. Естественно, это можно было вылечить с помощью нескольких небольших строк PHP в плагине, но плагин не имеет функций для «условных получателей» на основе контента, отправленного пользователем. Поэтому я хотел бы добавить эту функциональность только для этого сайта (если это можно сделать быстро), или я бы хотел заменить плагин на прямой php, который, похоже, вызовет больше проблем, чем это исправит изначально. Время имеет существенное значение. Большое вам спасибо за вашу помощь!

Самый важный вопрос, который вы должны задать себе, является ли я автором темы или плагина? , Если ваш ответ «да», и вы несете ответственность за сохранение плагина или темы, продолжайте, измените его и измените по своему усмотрению.

Если ваш ответ отрицательный, то вы не должны вносить в него никаких изменений, даже небольшую вещь, как простую точку . , То же самое касается файлов ядра WordPress. Простая причина, как вы заявили, если обновить тему / плагин / ядро, вы потеряете все, что вы сделали, с темой / plugin / core.

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

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

Если плагин использует wp_mail() для отправки сообщений электронной почты, вы можете попробовать использовать фильтр wp_mail для изменения получателей.

Попробуйте написать свой собственный плагин, чтобы решить эту проблему.

Вот пример такого плагина (непроверенный):

 /* Plugin Name: Change recipients for .gov emails */ add_filter( 'wp_mail', function ( $args ) { // Check if the recipent's email ends with .gov if( 'vog.' === strtolower( substr( strrev( $args['to'] ), 0, 4 ) ) ) { // Replace it with a new email address: $args['to'] = 'new@email.com'; } return $args; } ); 

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

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

Бывают ситуации, когда принято решение о редактировании существующего плагина, который вы не оригинал автора:

  • Плагин больше не поддерживается или поддерживается
  • В плагине есть некоторые вопиющие проблемы безопасности, которые могут поставить под угрозу ваш сервер / сайт, и вы не хотите ждать обновления и нуждаетесь в плагине

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

Если вам нужно добавить некоторые дополнительные функции для плагина, моим первым советом будет создание собственного плагина и самостоятельная запись функций. Тем не менее, есть примеры, когда вы можете удалить библиотеку Javascript и включить свой собственный в плагин, но автор решил включить в него и не использовать функции WordPress. Здесь ситуации, подобные этому, могут оказаться сложными, потому что вам придется отредактировать файл или два.

В ситуации, когда вам нужно редактировать файлы плагинов (и это последний случайный сценарий после изучения всех других параметров), вы должны сохранить файл изменений в каталоге плагина, у меня есть файл под названием «CHANGES.txt» и просто перечислите файлы изменены, номер строки, и если у меня есть время, я перечислил, что я сделал. Затем вы можете разделить файлы, если вам нужно обновить и посмотреть, что изменилось.

Последний метод не идеален, он имеет свои недостатки и сильно противоречит законам программирования. Но, как я уже упоминал, иногда редактирование файлов плагинов требуется, если плагин плохо написан или не позволяет легко переопределить / расширить тему или пользовательский плагин.