какой процесс вы используете для разработки wordpress?

<p>мне интересно, как другие люди разрабатывают темы и плагины для wordpress. для меня, редактор в браузере в панели администратора просто не обрезает его. в настоящее время я просто использую ide с плагином php (netbeans), вытаскиваю свой веб-каталог разработки с моего сервера, редактирую там, нажимаю вверх для тестирования, а затем мигрировать, чтобы жить.</p><p>я ищу, как другие люди используют свои инструменты для управления рабочими процессами при разработке, тестировании и развертывании тем, плагинов и тестировании последних версий wordpress на их основе, прежде чем начать работу.</p><p>я сделал это вики-сообществом, чтобы другие люди могли делиться там процессом разработки. я не ожидаю найти единственно правильный ответ здесь - ваш процесс - ваш собственный, и я не ожидаю, что вы делаете, чтобы просто работать на себя или кого-то еще. я просто заинтересован в улучшении моей способности разрабатывать плагины и темы, чтобы увидеть, что работает или не работает для других людей.</p><p>другой вопрос здесь обсуждает конкретные <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development">программные инструменты для поддержки разработки wordpress</a> . здесь я ищу дополнительные процессы и методологии, которые можно применять независимо от инструментов, за исключением определенных задач, которые могут быть выполнены только в определенном семействе инструментов.</p>

<p>для справки, я в основном делаю целые веб-сайты и плагины и разворачиваю их. мой рабочий процесс очень тяжелый.</p><p>чтобы начать работу над новым проектом, у меня есть сценарий shell, который позаботится о создании нового виртуального хоста и проверяет последний тег wordpress (из нашего собственного репозитория git, который отслеживает svn).</p><p>основной формой всего веб-сайта является git-репозиторий на wp-content. он содержит capfile (файл makefile capistrano eqiuivalent) и файл конфигурации yaml, которые вместе заботятся о развертывании ( <a href="http://github.com/dxw/wp-capistrano">http://github.com/dxw/wp-capistrano</a> ). также внутри этого репозитория я добавляю тему и плагины как подмодули git (да, мы поддерживаем git-репозитории и для сторонних плагинов - нам нравится использовать последнюю версию, которую мы лично протестировали).</p><p>для темы у меня есть инструмент/инфраструктура для генерации кода ( <a href="http://github.com/dxw/wp-generate">github.com/dxw/wp-generate</a> ). это означает меньше думать о том, куда должен идти код, и у него есть естественный метод разделения между представлением и моделью/контроллером.</p><p>при написании плагинов я использую cucumber/webrat для разработки через тестирование ( <a href="http://github.com/dxw/cucumber-wordpress">github.com/dxw/cucumber-wordpress</a> ).</p><p>а для переноса баз данных разработки в рабочую среду обычно это просто копирование дампа (wp\_siteurl и wp\_home устанавливаются capistrano на промежуточные/рабочие машины, поэтому поиск/замена не выполняются).</p><p>я не могу себе представить, сколько часов я сэкономил с этими сценариями.</p>

<p><strong> @thomas owens </strong>этот вопрос несколько перекрывает и дублирует вопрос " <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development"><strong> программное обеспечение для разработки тем/плагинов wordpress? </strong></a> ." не уверен, что мы должны закрыться, но это, кажется, немного другой фокус. так...</p><h3>mac os x</h3><p>вот <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development/388#388"><strong> мой основной набор инструментов для max os x </strong></a> (всегда в поисках лучшего.) обратите внимание, я попробовал netbeans и отказался от него. слишком вяло и слишком мало возможностей.</p><ul> <li> <a href="http://www.jetbrains.com/phpstorm/">phpstorm</a> + <a href="http://www.xdebug.org/">xdebug</a> - отладка ide (ничего лучше на mac)</li> <li> <a href="http://clickontyler.com/virtualhostx/">virtualhostx</a> - локально управляет виртуальными хостами apache (я <em>люблю</em> это)</li> <li> <a href="http://filezilla-project.org/">filezilla</a> - ftp-клиент</li> <li> <a href="http://getfirebug.com/">firefox firebug</a> - отладка jquery</li> <li> <a href="http://www.navicat.com/en/products/navicat\_mysql/mysql\_overview.html">navicat for mysql</a> - коммерческий клиент mysql</li> <li> <a href="http://unfuddle.com/">unfuddle.com</a> - репозиторий svn и управление задачами для клиентских проектов</li> <li> <a href="http://www.tuffcode.com/">http scoop</a> - разумный http-отладчик</li> <li> <a href="http://www.fraiseapp.com/">fraise</a> - легкий текстовый редактор (fork of <a href="http://www.tuffcode.com/">smultron</a> )</li> </ul><h3>виндоус виста</h3><p>когда я был <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development/388#388"><strong> в windows vista, мой основной набор инструментов </strong></a> был:</p><ul> <li> <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development">filezilla</a> - ftp-клиент</li> <li> <a href="https://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-plugin-development/388#388">firefox firebug</a> - отладка jquery</li> <li> <a href="http://www.jetbrains.com/phpstorm/">navicat for mysql</a> - коммерческий клиент mysql</li> <li> <a href="http://www.xdebug.org/">unfuddle.com</a> - репозиторий svn и управление задачами для клиентских проектов</li> <li> <a href="http://www.nusphere.com/products/">phped</a> - отладка ide (ничего лучше в windows, может быть, только <a href="https://wordpress.stackexchange.com/questions/119/how-can-i-easily-move-wp-from-development-to-production/182#182">phpstorm</a> + [xdebug] [24])</li> <li> <a href="http://www.heidisql.com/">heidisql</a> - отличный клиент mysql с открытым исходным кодом</li> <li> <a href="http://www.flos-freeware.ch/notepad2.html">notepad2</a> - отличная легкая и удобная альтернатива notepad</li> <li> <a href="http://tortoisesvn.net/">tortoisesvn</a> - svn клиент</li> <li> <a href="http://www.fiddler2.com/fiddler2/">fiddler 2</a> - непревзойденный отладчик http</li> </ul><h3>развертывание кода/миграция данных для переключения доменов</h3><p>не уверен, что это именно то, что вы ищете, но я разрабатываю плагин для облегчения миграции между локальным сервером разработки, тестовым сервером и сервером развертывания. я написал об этом здесь:</p><ul> <li> <a href="https://wordpress.stackexchange.com/questions/119/how-can-i-easily-move-wp-from-development-to-production/182#182">как я могу легко перейти wp из разработки в производство?</a> </li> </ul><p>надеюсь это поможет</p><p>-майк</p>

<p>это ответ рабочего процесса, не относящийся к ide или плагину.</p><p>решение, которое действительно хорошо работает для разработки плагинов, - это начать с локального веб-сервера apache, в котором каждый вариант wordpress установлен в подпапке.</p><p>храните ваши рабочие копии плагина/темы wordpress в отдельном месте вне корневого каталога локального сервера. создайте символическую ссылку на соответствующий ствол/тег/ветку в папке/wp-content/plugins каждого варианта wordpress.</p><p>при редактировании плагина в вашей ide внесенные вами изменения, очевидно, будут представлены в каждой установке wordpress, поэтому становится легко тестировать несколько вариантов wordpress.</p><p>по сути, вы можете открыть вкладку браузера для каждого локального варианта wordpress и протестировать каждый из них, работая над одним проектом и одной файловой базой.</p><p>используя ide, который поддерживает svn и ftp, все, что вам нужно сделать, это отредактировать вашу рабочую копию и зафиксировать ваши изменения обратно в хранилище.</p><p>как ide coda делает это для меня, но мне также нравятся netbeans и eclipse.</p><p>если вы довольны тем, что ваш плагин работает, и вы зафиксировали эти изменения в своем репозитории, вы можете открыть свой проект wordpress и опубликовать измененный плагин непосредственно на своем сайте.</p>

<p>у меня относительно несложная установка, которая развивалась с начала моей нынешней работы ~ 2,5 года назад.</p><h2>развивающийся</h2><p>я делаю всю свою разработку по ssh, используя <a href="http://www.vim.org/">vim</a> inside <a href="http://www.gnu.org/software/screen/">gnu screen</a> . плагины vim включают в себя:</p><ul> <li> <a href="http://mattn.github.com/zencoding-vim/">zencoding-vim</a> </li> <li> <a href="https://bitbucket.org/ns9tks/vim-fuzzyfinder/">fuzzyfinder</a> </li> </ul><p>вертикальные расщепления и <code>:set hidden</code> необходимы. я также предпочитаю терминал с 256 цветами ( <a href="http://iterm.sourceforge.net/">iterm</a> в mac os x) с <a href="http://www.vim.org/scripts/script.php?script\_id=2175">railscasts</a> цветовой схемой.</p><p>мы также медленно модифицировали <a href="http://dbug.ospinto.com/">dbug</a> , чтобы удовлетворить наши потребности. хорошая замена для <code>print\_r()</code> и <code>var\_dump()</code>, когда вы знаете, что переменная является массивом или объектом.</p><h2>развертывание</h2><p>в настоящее время я не работаю над многими общедоступными плагинами/темами, поэтому не проверяю совместимость плагинов с несколькими версиями wordpress. я пишу код на сервере разработчиков и перемещаю этот код в производство через subversion.</p>

<p><strong> процесс разработки wordpress theme </strong></p><ul> <li> <p>конвертировать каркас mock flow в базовый xhtml и css</p> </li> <li> <p>подключите xhtml к файлу шаблона master.php и конвертируйте в теги template и функции wp</p> </li> <li> <p>разделите master.php на различные файлы шаблона, а именно: header.php, index.php, sidebar.php и footer.php</p> </li> <li> <p>напишите любые пользовательские запросы и функции, которые могут понадобиться</p> </li> <li> <p>подключите макет css и добавьте <code>div {outline:1px solid red;}</code>, чтобы помочь настроить макет4.</p> </li> <li> <p>загрузите папку theme в wordpress для тестирования и дальнейшей разработки.</p> </li> </ul><p><strong> инструменты разработки wordpress </strong></p><ul> <li> <p>aptana studio редактор кода workplace со встроенным ftp</p> </li> <li> <p>putty</p> </li> <li> <p>два монитора 1920 x 1200 с открытым браузером на одном и редактором кода на другом</p> </li> <li> <p>wacom intuis 4 планшет</p> </li> <li> <p>firebug с yslow и скоростью google page</p> </li> </ul>

<p>мой рабочий процесс довольно прост. я не отставал от 4 сред. тестирование, разработка, постановка и производство.</p><h1>workflow</h1><p>я использую git для контроля версий; я игнорирую файл wp-config.php, поэтому этот файл не перезаписывается, когда я нажимаю и перемещаюсь по разным местам. я использую unuddle как общедоступный/центральный репозиторий для других, из которого можно вытолкнуть и вытащить.</p><p>кажется, это работает довольно хорошо. я буду совершать так часто, как я себя помню, пока я работаю над тестированием. по крайней мере, один раз в день, если не больше, я синхронизируюсь с unuddle и заставляю сервер разработки вносить изменения. я стараюсь не выполнять какую-либо прямую работу на сервере, поэтому я в основном просто вношу изменения. если в базу данных были внесены значительные изменения (новые плагины, обновленный контент и т.д.), я исключу это из своего тестирования; сделать резервную копию разработки и импортировать дамп.</p><p>я использую тот же процесс для постановки. постановка находится на том же сервере, что и производственный процесс, дважды проверьте правильность и убедитесь, что все настройки и модули работают на рабочем сервере. когда я буду готов, я создаю резервные копии всех рабочих файлов и базы данных и копирую файлы и базу данных из рабочей сцены.</p><p>поскольку wp-config.php отсутствует в git, он позволяет довольно просто перемещать и извлекать информацию. при переходе к производству из рабочей среды я копирую файлы и не использую git, поэтому я должен убедиться, что wp-config.php указан правильно.</p><p>я задал симлиар <a href="https://wordpress.stackexchange.com/questions/119/easily-move-a-wordpress-install-from-development-to-production">вопрос</a> , и я собираюсь изучить использование этого плагина.</p><p>я также думал об использовании capistrano; и создание очень подробного сценария миграции, который будет проходить и обрабатывать все файлы и резервные копии/миграции базы данных, а также обновлять пути к файлам и url-адреса.</p><h1>инструменты</h1><ul> <li>textmate для моего редактора, хотя я начинаю использовать macvim. я использую vim, когда на linux.</li> <li>sequel pro для работы с базой данных. если я не могу подключиться к нему, я буду использовать phpmyadmin</li> <li>передача для ftp, если мне это нужно.</li> <li>git для контроля версий. в основном из командной строки, хотя я немного использовал клиента в textmate и gittiapp.</li> </ul>

<p>одна вещь, которая помогает мне (особенно при работе над несколькими темами клиента), - это использование wordpress multisite на моем сервере разработки. таким образом, я могу иметь столько открытых вакансий, сколько нужно, и не беспокоиться о клиенте а, видящем тему клиента б. соедините это с полным пакетом примеров контента, который я загружаю каждый раз, когда создаю новый сайт, и у вас есть отличная система разработки.</p>

<p>я делаю от взлома на месте на сервере в духе жизненной системы до более структурированного dev/test/stage/жизненного цикла с использованием систем контроля версий и автоматизированных тестов. это зависит только от работы.</p><p>кроме того, я сообщаю об ошибках обратно в проект wordpress, когда запускаю их.</p><p>для разработки плагинов я стараюсь не заново изобретать колесо, а создавать новые на основе существующих принципов и шаблонов.</p>

<p>вот мой рабочий процесс:</p><ul> <li>я начинаю с создания каталога проекта, как только узнаю требования и дизайн сайта.</li> <li>версия папок <code>static</code> и <code>theme/plugin</code> в папках <code>dynamic</code>, использующих git.</li> <li> <p>создать виртуальный хост для проекта. я следую этой конвенции:</p> <p> <a href="http://project1.dev/">http://project1.dev/</a> </p> <p> <a href="http://project1.static.dev">http://project1.static.dev</a> (опционально)</p> </li> <li> <p>я обычно следую за этой организацией папок:</p> <pre><code>projects project1name docs //requirements docs, emails, other related documents. //this directory may contain directories with names as dates //(e.g 2014-01-01) to stay super organized :) designs //all psds go here data //database backup for the project, site dynamic //wordpress generally static //i don't always create a static version. i did a couple //of times in the past. i use the same structure inside //the theme or plugin i'm developing js css img project2name and so on ... </code></pre></li> </ul><p>я знаю, что я еще не использую инструмент <code>build</code> изо дня в день, что заставляет меня чувствовать себя плохо.</p><p>но я использую инструмент сборки ant для моего <a href="http://projects.junaidqadir.com/sprite2css">проекта sprite2css</a> в сочетании с парой php скриптов для использования ant.</p><h2>инструменты</h2><hr><p>будь я на windows или ubuntu, я использую следующее:</p><ul> <li>netbeans + sublimetext2 + notepad ++</li> <li>wamp - (php)</li> <li>fakemail</li> <li>git</li> <li>chrome и devtools + firefox с firebug и safari + ie для тестирования</li> <li>yslow!</li> <li>filezilla/winscp/nb встроенный ftp</li> <li>cygwin + командная строка</li> <li>композитор</li> <li>nodejs + npm</li> <li>sqlyog community edition + phpmyadmin</li> </ul><p>я открыт для предложений по улучшению моего рабочего процесса.</p>

<p>я работаю в windows с <a href="http://www.denwer.ru">denver</a> , filezilla, notepad ++, firefox firebug и другими инспекторами (ссылки были выше), cpanel и <a href="https://www.devart.com/dbforge/mysql/studio/">dbforge studio for mysql</a> </p>