Важно отметить, что вам не нужно активировать и деактивировать плагины при обновлении ядра WordPress с версии на версию. Вот объяснение Райана Борена о том, почему .В зависимости от плагина, некоторые из них могут иметь процесс обновления, встроенный в их обновление, то есть обновление плагина, а не WordPress.Тем не менее, я рассмотрю ваши три вопроса и отвечу на них так прямо, как смогу.
1.Является ли мое беспокойство по поводу того, что на производственных и промежуточных серверах установлен самый последний код, но отсутствуют какие-либо обновления базы данных, необходимые для получения точного последнего кода?
Да, при обновлении, если есть изменение в схеме базы данных, тогдаWordPress не будет работать должным образом, если не существует новая схема.При попытке доступа к стороне администратора WordPress, если версия базы данных ниже ожидаемой версии WordPress, он перенаправит вас на страницу обновления базы данных.
WordPress устанавливает глобальный файл с именем $wp_db_version
в файле / wp-includes / version.php и поддерживает каждый из сценариев миграции для постепенного обновления базы данных от каждой предыдущей версии к следующей.пока номер версии не обновлен, видно здесь .Вот простой список в FAQ, показывающий, как номера ревизий соотносятся с версиями WordPress. .
2.Если да, у кого-нибудь есть мысли о том, как я могу изменить код развертывания Capistrano для деактивации / реактивации плагинов?
Как я уже говорил выше, вам обычно не нужно активировать / деактивировать плагины после обновления ядра, если толькоЯ полагаю, что плагин специально требует, чтобы вы сделали это.Если изменения схемы в WordPress нарушают работу плагина, то разработчикам плагина потребуется выпустить новую версию.При обновлении этого плагина он будет отключен и перезапущен, и его разработчики несут ответственность за то, чтобы все, что требуется, выполнялось.
Однако вам может потребоваться деактивировать / активироватьотдельно в развернутых средах, таких как ваша, поскольку фактический процесс обновления происходит на другой машине и, следовательно, вероятно, отличается от той базы данных, на которой он в конечном итоге будет использоваться.
Возможно, лучше всего будетчтобы ваш скрипт развертывания совпадал с URI плагина в WordPress, написанного вами плагина, который будет деактивировать / активировать плагины, или существующего, который уже это делает.
Возможно, некоторые из существующих плагинов могут обрабатывать частичто вы ищете, но я считаю, что ключевым компонентом вашего вопроса является автоматизация, а также необходимость избегать входа в каждую среду и обновлять плагины для каждого, поэтому разработка самостоятельно, которая делает именно то, что вам нужно, может быть способомидти.Разработка плагина возможна, если вы используете инструменты, которые уже предоставляет WordPress.
Просмотрите весь файл / wp-admin / includes / plugin.php , чтобы увидеть, что вам может пригодиться.Кроме того, проверьте код, который фактически обрабатывает плагины на стороне администратора в / wp-admin / plugins.php - просто чтобы посмотреть, как это делается.Вы можете захотеть, чтобы хуки deactivate_plugin
не стирали конфигурацию плагина с плагинами, которые очищаются после себя, поэтому рассмотрите возможность передачи $silent
как true
при деактивации плагина.
Чтобы сделать этоочень удобно, вам, вероятно, захочется взять get_option('active_plugins')
, чтобы увидеть, какие плагины уже были активированы, и запускать ваш скрипт только на этих (убедитесь, что плагин исключает себя из процесса)
3.Как насчет изменений в WordPress, например, с 3,2 до 3,3?
Изменения с 3.2 на 3.3 следует рассматривать как ничем не отличающиеся от любых других изменений, поэтому все сказанное здесь применимо.
4. Если Capistrano не является инструментом для этого - и мне нужно сделать это более «вручную», войдя в систему администратора - есть ли инструмент / плагин режима обслуживания, который будет несколько автоматизировать деактивацию / активацию плагинов, так что любые обновления после активации срабатывает?
Я не думаю, что Капистрано будет выполнять здесь какую-то тяжелую работу, но это, конечно, тоже не мешает. Вам просто нужно иметь возможность просто нажать URI в плагине, и это должно привести к тому, что все будет происходить внутри приложения. Важно то, что очевидно, что все эти функции должны быть доступны, поэтому вы не можете просто запустить их как в независимом скрипте.