Мой путь к созданию плагина WordPress с помощью ChatGPT: 120 часов работы, без предварительного опыта

Опубликовано: 2024-08-28

Я буду честен: я действительно думал, что смогу создать плагин WordPress с ChatGPT всего за пару часов. Или, по крайней мере, именно в это меня убедили все обучающие материалы на YouTube и темы в Твиттере.

Но позвольте мне сказать вам, что в этих историях упущено несколько важных деталей – точнее, около 120 часов подробностей. Да, именно столько времени мне потребовалось, чтобы создать плагин от начала до конца: 120 часов!

Для контекста: у меня не было никакого опыта разработки плагинов или WordPress, но я все равно решил погрузиться. И хотя мне понравился этот вызов, он оказался намного сложнее, чем я ожидал. На каждом шагу я сталкивался с одним препятствием за другим, о существовании многих из которых я даже не подозревал. Это было неприятно, но в то же время это был огромный – огромный (!) – опыт обучения.

Предполагая, что вы планируете пойти по моим стопам, я настоятельно рекомендую вам заранее прочитать эту статью полностью. Я не говорю это в целях саморекламы. Я говорю это потому, что это действительно сэкономит вам часы – даже дни – дополнительной работы. В этом процессе я наткнулся на так много вещей, о важности которых я даже не подозревал, пока не свершился факт. К сожалению, это привело к бесчисленным изменениям кода (выполненным множеством разочарований), которые можно было предотвратить. Прочитав это, у вас не возникнет такой проблемы.

Оглавление
Мне потребовалось 120 часов, чтобы создать плагин #WordPress с #ChatGPT без предварительного опыта 🤯
Нажмите, чтобы твитнуть

Для кого это и не для 🙋‍♂️

В зависимости от вашего опыта и навыков вам может быть интересно, достаточно ли вы «квалифицированны» для этого. Я скажу вот что:

Хотя вам не обязательно иметь какие-либо предварительные знания в области кодирования, вам нужно с энтузиазмом относиться к изучению некоторого кода и общему процессу разработки плагина. Нужно пройти множество этапов, и часто один этап не имеет ничего общего с другим с точки зрения навыков (или даже инструментов), необходимых для его завершения. Короче говоря, будьте готовы учиться – МНОГОМУ .

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

Внимательность к деталям и распознавание шаблонов очень помогут, а также знание того, что делают PHP, JavaScript и CSS. Вам не обязательно уметь программировать с их помощью, но понимание их назначения и того, как они используются, будет преимуществом.

Если ничто из вышеперечисленного не описывает вас – особенно готовность учиться – и вы ищете быстрое и простое решение, то это не для вас. Это не быстро и не легко. Но это возможно, если приложить усилия.

Если вас это устраивает, то давайте начнем.

Этап первый: детально составьте план вашего плагина 📝

Самый первый вопрос, который вам нужно задать себе – и ответить – какой тип плагина я хочу создать и что я хочу, чтобы он делал?

У вас может возникнуть соблазн поторопиться с этим, чтобы приступить к созданию и написанию кода, но я призываю вас не торопиться. То, что вы здесь сделаете, заложит основу для ваших подсказок и позволит вам строить организованно, а не добавлять что-то на лету. Чтобы эффективно пройти этот этап, учтите следующее:

  • Какие функции вы хотите, чтобы ваш плагин имел?
  • Как вы хотите, чтобы выглядела часть wp-admin?
  • Создавайте каркасы или блок-схемы для визуализации рабочего процесса плагина.
  • Составьте план и опишите его до мельчайших деталей.
  • Решите, хотите ли вы, чтобы он был для частного использования или вы хотите сделать его доступным в репозитории WordPress для публичного доступа.

Функции

Читать разбивку 👇🏻

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

  • Размытие текста
  • Зашифрованный текст
  • Добавить подсказку к тексту
  • Увеличить или уменьшить текст
  • Добавьте светящийся фон к тексту
  • Выделение текста цветом фона
  • Затухание текста
  • Добавьте кликабельную аудиоссылку к фрагменту текста

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

wp-администратор

Читать разбивку 👇🏻

Затем подумайте, как вы хотите, чтобы ваш плагин выглядел и функционировал в области администрирования WordPress. Это включает в себя:

  • Страницы настроек : какие параметры вы хотите предоставить? Как вы их организуете?
  • Меню : где в меню администратора будет отображаться ваш плагин? Будут ли у него подменю?
  • Метабоксы : если ваш плагин взаимодействует с публикациями или страницами, потребуются ли ему специальные метабоксы?
  • Таблицы . Если вы храните данные, как вы будете отображать их для просмотра администратором?

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

Настройки забавных текстовых эффектов в wp-admin.

К несчастью для меня (но не для вас, потому что вы это читаете) я был настолько сосредоточен на функциональности внешнего интерфейса моего плагина на этапе планирования, что полностью пренебрег аспектом wp-admin.

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

Каркасы или блок-схемы

Читать разбивку 👇🏻

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

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

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

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

Объедините все и опишите подробно.

Читать разбивку 👇🏻

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

  • Именно то, что вы хотите, чтобы это сделало
  • Как вы хотите, чтобы он взаимодействовал с WordPress и другими частями вашего плагина?

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

  • Используйте короткие коды
  • Подключитесь непосредственно к редактору блоков
  • Добавьте дополнительные блоки
  • Добавьте конечные точки REST API
  • Включить крючки
  • Создавайте собственные типы записей и таксономии.

Если у вас нет технического словаря, чтобы описать эти точные механизмы или понять их – не паникуйте! Это совершенно нормально. Я перечислил их только для того, чтобы вы подумали об общей концепции. Основная цель — создать как можно более четкое представление о том, чего вы хотите достичь. Таким образом, когда вы запрашиваете ChatGPT, он будет учитывать все эти элементы при написании вашего кода.

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

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

Частное использование и публичный доступ через репозиторий WordPress

Читать разбивку 👇🏻

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

Хотите сделать это только для себя (или клиента)? Или вы хотите отправить его в репозиторий WordPress на утверждение, чтобы он стал доступен широкой публике?

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

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

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

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

Например, когда вы оставляете встроенные комментарии типа // Use global default. в конце необходимо поставить точку. Точка не имеет функционального назначения, но если она отсутствует, то по стандартам она будет помечена как «ошибка». Для частной сборки вы можете игнорировать этот тип «ошибки».

Этап второй: дайте ChatGPT подробную подсказку, чтобы начать разработку 🗣️

Основная идея здесь — предоставить GPT обзор вашего плагина с четкими инструкциями. В качестве общего совета я бы посоветовал вам не пытаться построить весь дом сразу. Лучше действовать поэтапно.

Допустим, вам нужно было создать мой плагин в качестве примера.

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

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

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

Чтобы сэкономить вам время, я создал пример шаблона, который вы можете предоставить ChatGPT для начала работы.

Разделы в скобках [X] требуют вашего ввода для завершения. Возможно, вам придется редактировать его дальше, а может и нет, в зависимости от типа плагина, который вы планируете создать.

Если вам не все понятно в подсказке, не волнуйтесь, я тоже не понял. Вы узнаете по мере прохождения процесса.

Моя подсказка 🤖

 I want to build a WordPress plugin called [name] that does the following: [General overview but don't give GPT the specifics yet] I'd like it to work via [Refer back to the section "combine everything and describe it in detail" from phase one; think about how you want your plugin to function - if you're not sure, then you can delete this part] . I would also like to create a settings menu in wp-admin so that users can [Explain what you want your settings menu to look like and do, including any specific UI/UX considerations; if you create any wireframes, upload those as well] I plan on using the following tools for this process: - Docker and/or Local by Flywheel {Choose one or use both} - Terminal (MAC) {if you're using a PC, substitute with Command Prompt} - Sublime Text - Chrome and Chrome inspector tool Also, I want to use GitHub for version control to track changes and collaborate effectively. I will use the default WordPress template provided by GitHub to generate the code for the .gitignore file. However, I will need your help to walk me through how to set up a repository and how to commit my files to it. For the main PHP file, the author name should be [your name] and the author URI should be [your website if you have one] . For any code you generate, please use tabs for indentation and not spaces. {important if you plan on submitting your plugin to the WordPress repository} If you need to enqueue any scripts, please ask me questions to help me figure out whether we should use conditional loading or if we should enqueue globally. In addition, when generating CSS, please follow BEM (Block Element Modifier) methodology. Let's begin with [insert which feature you'd like to build first] Please [Optional: help me setup Local by Flywheel and then] generate the initial PHP file and advise on next steps after that.

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

Чтобы дать вам представление о том, что я имею в виду, я сам проверил подсказку трижды. Помимо помощи в настройке Local by Flywheel и создании исходного PHP-файла, остальные шаги каждый раз выполнялись по-разному.

Первая попытка

Предоставление ChatGPT первоначального запроса на попытку создания плагина номер один.

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

Вторая попытка

Вторая попытка привела к созданию самого простого PHP-файла, но в целом наиболее тщательного ответа с точки зрения проработки шагов. Он сразу же приступил к использованию терминала для настройки каталогов проектов и инициализации Sublime. Меня даже научили настраивать репозиторий Git.

Выдача ChatGPT первоначального запроса на попытку создания плагина номер два.

Третья попытка

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

Выдача ChatGPT первоначального запроса на попытку создания плагина номер три.

Вывод

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

Я имею в виду, что вы должны обратить внимание на то, что ChatGPT делает (и не делает), и вернуть его в нужное русло, если он не работает. Итак, продвигаясь по этому пути, не забывайте возвращаться к подсказке, а также к указателям, которыми я поделюсь чуть позже в разделе отладки. Напоминайте и переориентируйте ChatGPT, чтобы он делал то, что вы хотите, и столько, сколько вам нужно.

Загрузите мой плагин и протестируйте его 📥

Если вы хотите опробовать «рабочую версию» моего плагина, zip-файл находится ниже. В ближайшем будущем я обновлю это, включив в него версию репозитория WP, но пока это позволит вам использовать ее.

Скачать плагин Funky Text Effects

Третий этап: инструменты, скрипты, каталоги и Git 👩‍💻

На этом этапе вы заложите основу для создания вашего плагина. Здесь также будет быстро увеличиваться кривая обучения, особенно когда вы начнете устанавливать сценарии и использовать терминал (или командную строку, если вы на ПК). Вот разбивка:

  • Решите, какой инструмент локальной среды вы хотите использовать (например, Local от Flywheel, Docker).
  • Настройте каталоги проекта.
  • Установите свои скрипты (например, npm, Composer).
  • Настройте репозиторий Git («репо») и зафиксируйте (загрузите) в него файлы плагина.

Создайте локальную среду

Читать разбивку 👇🏻

Когда я создавал свой плагин, я использовал и Local от Flywheel, и Docker, но позвольте мне прояснить: вам действительно нужен только один из них.

Я начал с Local от Flywheel, потому что он удобен для пользователя и специально разработан для разработки WordPress. Однако, когда я изначально попытался подключить свой плагин непосредственно к редактору блоков, я столкнулся с некоторыми конфликтами зависимостей. Происходит, когда два или более плагинов или тем требуют разных версий одной и той же зависимости. . Именно тогда ChatGPT предложил мне попробовать Docker, и в итоге у меня остались оба инструмента.

Мой совет? Начните с Local от Flywheel. Это просто и отлично подходит для большинства сценариев разработки плагинов для начинающих. Рассматривайте альтернативы, такие как Docker, только в том случае, если вы столкнулись с конкретными проблемами, с которыми Local не может справиться.

После настройки вашего веб-сайта я также рекомендую установить плагин WP Fastest Cache. Это пригодится позже, когда вы будете анализировать и отлаживать.

Настройка каталогов проекта

Читать разбивку 👇🏻

Как только ваша локальная среда будет запущена и заработает, вам нужно будет настроить структуру каталогов вашего плагина. Хорошо организованная файловая структура имеет решающее значение для удобной и масштабируемой разработки плагинов. Вот как начать:

  • В вашей локальной среде (т. е. на жестком диске) перейдите в каталог плагинов WordPress (обычно wp-content/plugins/ ).
  • Создайте новую папку для вашего плагина. Выберите описательное, но краткое имя. Я назвал свой «Веселые текстовые эффекты».
  • Внутри этой основной папки создайте базовую структуру, которая выглядит примерно так:
 funky-text-effects/ ├── assets/ │ ├── css/ │ ├── js/ │ └── images/ └── funky-text-effects.php

Если вы планируете переводить свой плагин на другие языки, вы также можете добавить каталог /languages ​​в основной каталог плагина:

фанки-текстовые эффекты/
├── активы/
│ ├── css/
│ ├── js/
│ └── изображения/
├── языки/ (необязательно)
└── funky-text-effects.php

  • Наконец, создайте файл .gitignore в основном каталоге плагинов, который поможет вам избежать добавления ненужных файлов в ваш репозиторий Git. Это было включено в исходный шаблон приглашения ChatGPT, поэтому вполне возможно, что GPT автоматически предложит вам сделать это, когда вы достигнете этого шага. Однако об этом можно забыть, особенно если поток становится слишком длинным. Вот почему я упоминаю об этом здесь как напоминание.

Установить скрипты

Читать разбивку 👇🏻

Чтобы установить сценарии, вам нужно будет использовать интерфейс командной строки — это Терминал на Mac или Командная строка на Windows.

Если вы новичок в разработке, это может показаться пугающим. Но не волнуйтесь, это не так страшно, как кажется! Более того, всякий раз, когда вы застрянете – а поверьте мне, вы застрянете – ChatGPT всегда будет рядом, чтобы помочь вам выбраться. Я также рекомендую использовать Клода в качестве запасного варианта. Иногда, если вы ничего не добьетесь с помощью GPT, Клод может обеспечить прорыв.

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

  1. NPM (менеджер пакетов узлов): для различных инструментов JavaScript.
  2. Композитор: для управления зависимостями PHP.
  3. Скрипты WordPress: коллекция повторно используемых скриптов для разработки WordPress.

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

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

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

Создайте репозиторий Git («репо») и зафиксируйте свои файлы.

Читать разбивку 👇🏻
Мой репозиторий на GitHub.
Мой первоначальный репозиторий GitHub. На данный момент это конфиденциальная информация, но как только я внесу некоторые дополнительные изменения в свой код, я опубликую ее — так что следите за этой страницей!

После выполнения всех предыдущих шагов пришло время создать репозиторий Git и зафиксировать в нем исходные файлы. На этом шаге создается снимок начальной точки вашего проекта.

Лично я использовал GitHub, потому что мы используем его здесь, в Themeisle, поэтому у меня уже была учетная запись там, но есть и другие платформы (например, GitLab, Bitbucket). Если вы в конечном итоге будете использовать платформу, отличную от GitHub, не забудьте настроить шаблон приглашения на третьем этапе .

Для краткости я не буду объяснять вам, как это сделать. Как только вы достигнете этого шага, ChatGPT сможет шаг за шагом провести вас через весь процесс, включая команды, которые вам нужно будет ввести в терминал или командную строку.

При фиксации исходных файлов помните следующее:

  • Проверьте, что вы фиксируете: убедитесь, что вы включаете только необходимые файлы. Используйте файл .gitignore чтобы исключить любые временные или созданные файлы.
  • Напишите четкое сообщение о фиксации: что-то вроде «Первоначальная фиксация: базовая структура и конфигурации проекта» работает хорошо.
  • Не беспокойтесь о совершенстве: это всего лишь ваша отправная точка. По мере разработки плагина вы будете делать еще много коммитов.

Опять же, ChatGPT, скорее всего, даст вам рекомендации по конкретным командам, которые следует использовать для этой первоначальной фиксации. Если нет, просто попросите об этом. Обязательно напишите, что вам нужны точные шаги в зависимости от вашей настройки и платформы Git.

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

Этап четвертый: время работы с плагином 🖱️

Из всех этапов я бы сказал, что этот и следующий, вероятно, самые интересные, потому что именно тогда вы действительно начинаете видеть, как все складывается воедино. Чтобы начать, вам нужно войти в свою локальную установку WordPress. Если вы в конечном итоге используете Local by Flywheel, это очень просто: просто нажмите кнопку WP Admin в правом верхнем углу:

Вход в wp-admin из интерфейса Local by Flywheel.

Если вы в конечном итоге используете Docker или другой локальный инструмент разработки и не знаете, как попасть на свой сайт, просто спросите ChatGPT.

После входа в систему активируйте свой плагин, перейдя в «Плагины» → «Установленные плагины» . Затем найдите свой плагин в списке и нажмите « Активировать» :

⚠️ Важно : если вы не видите здесь свой плагин, не паникуйте. Скорее всего, это несовпадение каталогов, но в любом случае вы можете нажать ChatGPT, чтобы разобраться в этом. Если после неоднократных попыток вы все еще застряли, а ChatGPT не предложил вам попробовать режим отладки WordPress, попросите его предоставить вам фрагменты кода для него. Они будут выглядеть примерно так:

 define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

После активации плагина начните его использовать и делайте заметки:

  • Все ли работает так, как должно? Очень маловероятно .
  • Что не работает? В каком смысле это не работает?
  • Какие незначительные вещи вы совершенно упустили из виду в первоначальном описании подсказки и которые не работают должным образом?

Сделав заметки, вы готовы перейти к следующему этапу: отладке и проверке.

Этап пятый: отладка и линтинг 💻

Сложность плагина и ошибки имеют корреляционную связь: чем сложнее становится ваш плагин, тем больше вероятность ошибок . Но даже более простые плагины потребуют проверки и отладки.

Линтинг

Если в этой статье вы впервые видите слово «линтинг» и не уверены, что оно означает, очень просто: оно проверяет код вашего плагина на соответствие набору правил и стандартов для этого типа кода. Затем он сообщает вам, обнаружены ли какие-либо ошибки или несоответствия, в каких строках они находятся и как их устранить.

Пример того, как я анализирую один из моих файлов JavaScript.

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

  • PHP_CodeSniffer со стандартами WordPress-Coding-Standards для проверки PHP.
  • ESLint для проверки JavaScript.
  • StyleLint для проверки CSS.

Для JavaScript вы также можете добавить:

  • ESLint Unicorn: более 100 мощных правил ESLint.
  • ESLint Promise: полезен для управления асинхронными задачами, такими как вызовы API, запросы к базе данных, обработка файлов или любые операции, выполнение которых требует времени.

Отладка

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

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

Однако ChatGPT с трудом удается сосредоточиться на проблемных строках кода, а это означает, что вам нужно позаботиться о «готовности, настройке», прежде чем позволить ему «сработать».

Чтобы вам было проще, я составил список всех советов, которые я бы дал себе перед началом этапа отладки.

Читать разбивку 👇🏻

Не будьте расплывчатыми и не оставляйте это на усмотрение ChatGPT.

Если вы не дадите ChatGPT очень конкретные инструкции, он начнет выплевывать вам бесконечные строки кода, и часто код даже не будет отличаться от того, что он вам уже дал. Он захочет, чтобы вы «перепроверили» его правильность, но все, что он сделает, — это потеряет время. Нет ничего более неприятного, чем это:

ChatGPT предоставляет во время отладки код, идентичный ранее предоставленному коду (т. е. не решает проблему).

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

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

Обычный CSS против BEM CSS

В связи с вышеизложенным, но конкретно для CSS, вы должны иметь в виду, что для любых фрагментов CSS ChatGPT по умолчанию генерирует стандартный CSS или то, что я называю «классным CSS».

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

Вместо этого лучше указать GPT использовать методологию BEM (модификатор блочного элемента). BEM помогает снизить риск конфликтов CSS, предоставляя четкое и структурированное соглашение об именах. Это гарантирует, что ваши стили будут более предсказуемыми и простыми в управлении, поскольку каждый блок, элемент и модификатор имеют отдельное описательное имя класса, что сводит к минимуму вероятность непреднамеренного воздействия стиля. Кроме того, BEM повышает удобство сопровождения, упрощая поиск и обновление определенных стилей, не затрагивая другие.

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

Условная загрузка и глобальная постановка в очередь

Другое поведение ChatGPT по умолчанию связано со сценариями постановки в очередь. Не волнуйтесь, если вы еще не знаете, что означает эта фраза. Важно то, что вы узнаете это в своем коде, когда увидите. Это будет выглядеть примерно так:

 function enqueue_my_scripts() { wp_enqueue_script('my-plugin-script', plugin_dir_url( FILE ) . 'js/my-script.js', array('jquery'), '1.0.0', true); } add_action('admin_enqueue_scripts', 'enqueue_my_scripts');

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

Поэтому, как только вы заметите, что ChatGPT генерирует какой-либо код со словом «поставить в очередь», обязательно обсудите это. Спросите ChatGPT, имеет ли смысл ставить ваши скрипты в очередь глобально или только на определенных страницах, где они необходимы – это называется «условной загрузкой».

Напоминайте и напоминайте почаще

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

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

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

Когда это произойдет, просто нажмите кнопку «Стоп» на выходе GPT и напомните ему следовать вашим инструкциям. Также полезно скопировать и вставить их в окно чата, когда вы делаете напоминание.

Говоря о генерации длинных строк кода…

Избегайте повторного создания за вас целых файлов ChatGPT.

Если вы не привыкли работать с кодом и боитесь этого, то попросить ChatGPT восстановить для вас весь файл после каждой настройки кода на первый взгляд может показаться привлекательным.

Все, что вам нужно сделать, это «скопировать и вставить», верно?

Хотя это может показаться заманчивым, на самом деле это плохая идея . В долгосрочной перспективе это доставит вам еще больше проблем. Вы не только потратите на это много времени, особенно если вы отлаживаете свой PHP-файл, который может стать довольно длинным, но и ChatGPT может в процессе внести новые ошибки в существующий код. Это решит проблему, над которой вы работаете, но затем случайно изменит какую-то другую часть файла и что-то сломает.

Лучше изолировать конкретные части кода, вызывающие проблему, и работать только с ними.

Принимайте по одной ошибке за раз

Аналогично вышеизложенному, даже если у вас есть несколько ошибок (если они не очень незначительные), сообщайте ChatGPT только об одной из них за раз. Исправьте каждую ошибку, прежде чем переходить к следующей.

Обратите пристальное внимание на самые верхние и самые нижние строки фрагментов кода.

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

⚠️ Обратите особое внимание на верхнюю строку:

Игнорирование верхней строки фрагмента кода.

Если это не относится к конкретному фрагменту кода, который вы пытаетесь отладить, игнорируйте его.

То же самое касается и прибыли, хотя ее сложнее обнаружить. Иногда это может быть так просто, как }); что приводит к поломке вашего кода, поскольку он закрывает родительский фрагмент, который еще не предназначен для закрытия.

Игнорирование нижней строки фрагмента кода.

Через некоторое время вы научитесь лучше в этом разбираться, но когда вы начнете свой путь разработки плагина, если вы заметите, что после добавления фрагмента многие вещи ломаются, попробуйте удалить эту самую последнюю строку, чтобы посмотреть, не «волшебным образом» она » все исправляет.

Консоль — ваш лучший друг

Если ChatGPT безуспешно пытается отладить ту же проблему и вы начинаете ходить по кругу, попросите его добавить строки console.log в разделы кода, которые, по его мнению, вызывают проблему. Затем откройте консоль и воссоздайте ошибку. Это объяснит, что произошло. Затем вы можете сделать снимок экрана с этим объяснением и передать его в ChatGPT, чтобы он мог выяснить, как это исправить.

Использование консоли для отладки.

Чтобы получить доступ к консоли в Google Chrome, щелкните страницу правой кнопкой мыши и выберите «Проверить» :

Доступ к консоли в Google Chrome.

Если консоль не дает ответов, проверьте свою базу данных

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

Например, когда я пытался добавить эффект набора текста в свой плагин, скорость предварительного просмотра эффекта по умолчанию в wp-admin была установлена ​​на 23 миллисекунды. Я потратил безумное количество времени на пересмотр своих файлов PHP и JavaScript, чтобы попытаться решить эту проблему, но безрезультатно.

Консоль подтвердила, что загружалась на 23, но больше никакой ценной информации не дала:

Ошибка подтверждения консоли, но решения нет.

В конце концов я проверил базу данных и понял, что ошибочное значение пришло именно оттуда:

Проверка базы данных на наличие ошибок.

Я переключил это значение с 23 на 60, чего я и хотел, и это решило проблему.

Если вы в конечном итоге используете Local by Flywheel, вы можете легко получить доступ к своей базе данных через интерфейс, щелкнув вкладку «База данных»:

Доступ к базе данных через Local с помощью Flywheel.

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

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

Свежая тема может дать вам прорыв

По мере того, как ваш код растет, а поток с ChatGPT становится все длиннее и длиннее, он будет склонен совершать ошибки или что-то забывать. В определенный момент будет хорошей идеей создать новую тему. Загрузите основные файлы плагина в новую ветку и объясните ChatGPT, что вы делаете и на чем остановились.

Вот пример приглашения, которое вы можете использовать:

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

Взгляните на файлы плагина здесь и давайте попробуем устранить неполадку [опишите вашу ошибку] ​​.

Кроме того, и это ОЧЕНЬ ВАЖНО, при создании новых версий фрагментов кода в попытке устранения неполадок не просто создавайте фрагмент, но также предоставьте объяснение, какие строки вы изменили по сравнению с тем, что уже присутствует. Также объясните причину изменения этих строк и что мы можем ожидать от внесенных вами изменений.

[При создании CSS не забудьте напомнить ChatGPT о необходимости следовать методологии BEM (модификатор блочного элемента).]

Не бойтесь использовать свой мозг

Чем сложнее ваш плагин, тем выше вероятность того, что GPT испортит ваш код. Хотя это и помогает вам в отладке, иногда вы обнаружите, что лучше найти решение самостоятельно. Честно говоря, со мной такое случалось довольно часто, особенно на поздних стадиях сборки, когда мой основной PHP-файл разросся до более чем 500 строк (а в более поздних версиях их было больше 1000).

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

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

Тем не менее, даже если вы полный нуб, вы можете просмотреть строки кода, которые, по мнению GPT, могут вызывать проблему. Затем найдите идентичный элемент в своем коде, который работает правильно. Сравните его код с кодом сломанного элемента и попытайтесь увидеть, что в нем отличается. Часто это решает проблему:

Сохраняйте резервные копии файлов вашего плагина (необязательно, если вы используете Git).

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

Создание копий файлов плагина.

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

Не сдавайтесь легко, но знайте свои пределы

Могут быть некоторые функции или настройки, которые вы просто не сможете реализовать, как бы вы ни старались. Будьте готовы скорректировать свои ожидания и обойти их . Это не значит, что нужно сдаваться, если вы уперлись в стену. Однако это означает, что если вы предприняли 100 попыток и потратили часы (или дни), пытаясь добиться чего-то, но безуспешно, то это, вероятно, либо невозможно, либо находится за пределами возможностей как вас, так и ChatGPT.

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

Этап шестой (необязательно): тестирование 🔬

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

Проще говоря, здесь существует компромисс между затратами времени и практической ценностью .

По моему собственному опыту, мне удалось успешно создать один тест, который проверял, способны ли мои плагины выполнять свои основные функции при взаимодействии с ними пользователя – но на отладку у меня ушел целый день!

Разговор с ChatGPT о тестировании плагина WordPress.

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

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

Виды тестов

Читать разбивку 👇🏻

В зависимости от сложности вашего плагина вы можете рассмотреть различные типы тестов, такие как:

  • Модульные тесты . Эти тесты направлены на проверку функциональности отдельных компонентов или методов вашего плагина.
  • Интеграционные тесты . Эти тесты проверяют, как различные части вашего плагина работают вместе, гарантируя, что общая функциональность соответствует ожиданиям.
  • Сквозные тесты (E2E) : эти тесты имитируют взаимодействие пользователя с вашим плагином от начала до конца, чтобы убедиться, что он ведет себя так, как задумано в реальном сценарии.

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

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

Инструменты, которые следует учитывать

Читать разбивку 👇🏻
  • Yoast PHPUnit Polyfills : этот пакет Composer обеспечивает совместимость с последней версией PHPUnit для более старых версий PHP, гарантируя, что ваши тесты могут работать согласованно в различных средах.
    Команда терминала : composer require yoast/phpunit-polyfills
  • MySQL : сервер базы данных MySQL является общим требованием для многих плагинов WordPress, поскольку им часто требуется база данных для хранения и извлечения данных.
    Ссылка для скачивания : https://dev.mysql.com/downloads/mysql/.

В рамках моей настройки тестирования я использовал как Yoast PHPUnit Polyfills, так и MySQL.

Дополнительные инструменты, которые вы можете рассмотреть:

  • WP_Mock : это среда тестирования, специально разработанная для разработки WordPress. Он позволяет вам имитировать основные функции WordPress, что может быть особенно полезно при написании модульных тестов.
    Команда терминала : composer require 10up/wp_mock
  • Codeception : это комплексная среда тестирования, которая поддерживает модульное, интеграционное и сквозное (E2E) тестирование. Он имеет специальный модуль WordPress, который может упростить процесс тестирования плагинов WordPress.
    Команда терминала : composer require codeception/codeception
  • WP Browser : это модуль Codeception, который предоставляет высокоуровневый API для взаимодействия с WordPress во время E2E-тестов. Это может помочь вам смоделировать взаимодействие с пользователем и протестировать функциональность вашего плагина в более реалистичной среде.
    Команда терминала : нет прямой команды терминала, так как это модуль в Codeception.
  • PHPUnit Parallel Runner : Если у вас большой набор тестов, вы можете рассмотреть возможность использования PHPUnit Parallel Runner, чтобы ускорить процесс тестирования за счет одновременного запуска тестов.
    Команда терминала : composer require brianium/paratest

Этап седьмой (необязательно): отправьте плагин в репозиторий WordPress 🥳

Если вы дошли до этого момента, то вы успешно поднялись на пресловутую гору плагинов. Единственное, что осталось сделать, — это установить свой флаг, чтобы он присоединился к другим 59 650 плагинам в репозитории WordPress.

Для этого существует отдельный процесс, который сопровождается контрольным списком на странице «Добавление плагина»:

  • Прочтите часто задаваемые вопросы.
  • Соблюдайте все рекомендации разработчика плагинов.
  • Убедитесь, что у вас есть разрешение на загрузку вашего плагина на WordPress.org, чтобы другие могли его использовать и делиться.
  • Ваш плагин, включая все его библиотеки и любые другие включенные в него ресурсы, лицензируются по лицензии GPL или совместимы с GPL.
  • Вы проводите последний этап тестирования с помощью плагина Plugin Check и устраняете все указанные проблемы (за исключением тех, которые, по вашему мнению, являются ложноположительными).
Проверка плагина (PCP) Проверка плагина (PCP)

Автор(ы): Команда производительности WordPress и группа проверки плагинов

Текущая версия: 1.1.0

Последнее обновление: 28 августа 2024 г.

плагин-check.1.1.0.zip

92% оценок Более 1000 установок Требуется WP 6.3+

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

Чтобы продолжить, перейдите в ИнструментыПроверка плагинов :

Доступ к инструменту проверки плагинов из wp-admin.

Затем отметьте все пять категорий и запустите проверку:

Результаты проверки плагина.

Затем вы можете передать эти нерешенные проблемы в ChatGPT и решить их. Когда вы закончите, запустите проверку еще раз, чтобы убедиться в чистоте результата. Сделайте это столько раз, сколько вам нужно. Как только вы получите полностью чистую проверку (за исключением ложных срабатываний), вы сможете отправить свой плагин команде разработчиков WordPress. Затем терпеливо ждите, пока они его проверят.

Перейти наверх

Заключительные мысли 🧠

Хотя создание плагина с ChatGPT — увлекательный и полезный процесс, это ни в коем случае не быстрый процесс. Вам придется вложить немало усилий, чтобы создать достойно работающий конечный продукт. Однако в конце концов вы оцените все новые навыки, которым вас научит этот проект.

Мне потребовалось 120 часов, чтобы создать плагин #WordPress с #ChatGPT без предварительного опыта 🤯
Нажмите, чтобы твитнуть

Вот несколько вещей, которые я узнал (и вы тоже можете узнать):

  • Я научился перемещаться по жесткому диску с помощью команд терминала, а также изучил другие команды, связанные с процессом создания плагина.
  • Теперь мне вполне комфортно работать как с Docker, так и с Local от Flywheel, которые я никогда не использовал до этого эксперимента.
  • Я также знаком со многими инструментами и скриптами разработчика, о существовании которых до этого даже не подозревал.
  • Раньше я посещал несколько занятий в Free Code Camp и Codecademy, и хотя оба были великолепны, я чувствую, что, выполнив этот проект, я получил гораздо больше практических знаний.
  • В связи с вышесказанным, теперь у меня есть много случайных кусочков информации, которые пригодятся, если я снова буду работать над чем-то подобным.
  • Разрыв между нулевым и рабочим плагином намного меньше, чем разрыв между рабочим плагином и готовым к отправке плагином. Я подготовил рабочую версию своего плагина за несколько дней, но мне потребовалось еще несколько недель, прежде чем я проработал все настройки, чтобы сделать его достаточно хорошим для отправки в репозиторий WordPress.

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

Ура! Вы дочитали статью до конца!