Как отредактировать плагин wordpress без прерывания его процесса обновления

Я хотел бы добавить некоторые дополнительные функции /функции с уже доступным плагином WordPress.

Можно ли перенести мою настройку при обновлении плагина?

6 голосов | спросил notme 6 +04002011-10-06T14:27:38+04:00312011bEurope/MoscowThu, 06 Oct 2011 14:27:38 +0400 2011, 14:27:38

4 ответа


8

Возможно, нет.

Рекомендуемый способ получить ваши улучшения в плагине: отправить исправления разработчику и попросить ее объединить их в оригинал. Если ваши изменения скорее личные настройки, это не произойдет.

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

Мы могли бы помочь лучше, если бы вы описали, какой плагин вы хотите расширить, и что именно вы хотите изменить.

ответил fuxia 6 +04002011-10-06T14:41:04+04:00312011bEurope/MoscowThu, 06 Oct 2011 14:41:04 +0400 2011, 14:41:04
5

К сожалению, это полностью зависит от плагина (или, точнее, от автора плагина!) Если автор думал про-активно и создал плагин таким образом, чтобы сделать его расширяемым, то да, вы можете создать свой СОБСТВЕННЫЙ плагин, который добавляет функциональность в существующий плагин.

Обратите внимание на то, что указал Тошо, - что ваш заказ плагина имеет значение (ссылка снова здесь ).

Крючки

Наиболее распространенным способом создания расширяемого плагина является добавление крючков (действий и перехватчиков фильтров), которые затем можно использовать с помощью собственного плагина. Если у вас хороший редактор кода (сейчас я раскачиваюсь на NetBeans ), вы должны выполнить поиск через исходные файлы плагина для: do_action и apply_filters. Если автор плагинов предоставил эти перехватчики, это очень удобный и простой способ для вас перегрузить по умолчанию или ввести собственный код.

Вставные функции

Если автор плагина опытный, но использует глобальное пространство имен для функций плагина, он, возможно, завернул функции плагина в if ( function_exists() ) условные операторы. Чтобы это работало в ваших интересах, вы должны сначала убедиться, что ваш плагин загружен (что может быть проблемой). Все, что вам нужно сделать, это объявить свою функцию точно таким же именем в пределах одного и того же пространства имен, а затем ваша функция заменит ту, которая используется плагином.

Extension

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

Вилка или патч

Если автор плагина использует gitHub или открыл источник каким-то другим способом, вы можете отправить исправления для автора с предложенными вами модификациями (лучше всего изменить плагин, чтобы сделать его БОЛЕЕ гибким или мощным без удаления или изменения существующих функций или функций), или вы можете просто загрузить источник, изменить заголовок плагина до такой степени, чтобы он больше не будет обновляться, когда исходный автор выталкивает обновление и предпочтительно передает вашу обновленную версию автору или как свою собственную сущность непосредственно в WordPress . Имейте в виду, что если вы отправляете плагин в WP, вам понадобится сайт для него, и он должен быть готов поддержать его, если другие его загружают.

ответил Tom Auger 12 +04002011-10-12T22:01:23+04:00312011bEurope/MoscowWed, 12 Oct 2011 22:01:23 +0400 2011, 22:01:23
0

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

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

У меня была проблема с переносом изменений в обновленную версию темы. Мы сделали рекурсивный diff из ---- +: = 0 =: + ---- до old_version, а затем применил созданный патч в новой версии темы, используя патч .

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

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

ответил Prathamesh Gharat 30 Maypm15 2015, 15:02:17
0

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

У меня есть плагин, в котором один из разработчиков моего клиента изменил его до предела каталогов & подкаталоги, при обновлении файлы удаляются и происходит сбой плагина. Чтобы сделать оригинальный плагин независимым от каких-либо обновлений ядра, я переместил измененные файлы и папки в отдельный плагин в каталоге с именем extension

Используя код, найденный в https://gist.github.com/wpsmith/af206df2cf6a38e4e2f0

Я добавил класс, определенный Тарвисом Смитом в WPS_Extend_Plugin.php и включил его в мой плагин. Используя класс WPS_Extend_Plugin, я указал каталог расширенных файлов /папок в целевую папку extension. Пока нет сбоя, но я не уверен, что это правильный способ расширения плагина или нет!

// Require WPS_Extend_Plugin class
require_once( 'classes/WPS_Extend_Plugin.php' );

// Extend Sitepress Multilingual CMS
new WPS_Extend_Plugin( 'sitepress-multilingual-cms/sitepress.php', __FILE__, '3.9.0', 'CHERRY' );
// Extend AddThis
new WPS_Extend_Plugin( 'extension', __DIR__, '0.1', 'CHERRY' );
ответил Hassan Alvi 9 Jam1000000amTue, 09 Jan 2018 10:32:04 +030018 2018, 10:32:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132