Блог Дмитрия Волотко Подпишись на обновления!

Плагин для WordPress и стандартные функции

Недавно я решил более плотно посмотреть, как пишутся плагины для WordPress, и реализовать пару интересных, с моей точки зрения, идей, при чем не только для себя, но и для широкой публики. Раньше я преимущественно обходился правками functions.php в папке с моим шаблоном. А бывало, и кстати нередко, правками непосредственно в шаблоне. Поставив для себя задачу — сделать плагин максимально совместимым, я столкнулся с одной проблемой, о которой и хочу рассказать ниже.

Тему всей записи, на самом деле, можно сформулировать в двух вопросах. Обрабатывать существующие, стандартные для WP функции, либо создавать свои? И, если выбрана обработка существующих функций, то как быть с совместимостью с иными плагинами? Далее я предлагаю на эти, в общем-то, важные вопросы свои ответы. Если у вас есть свои — буду рад прочитать их в комментариях.

Если на первый вопрос я ответил очевидным образом, то со вторым — не всё так просто. И именно поэтому я до сих пор не выложил плагин, который уже работает на моём блоге (речьпро Твиттер-ники в комментариях, да), и который, благодаря моим фолловерам и нескольким читателям, уже имеет версию 1.02, пройдя путь в 12 серьёзных правок.

Но давайте по порядку. Сначала мне хотелось бы пояснить, отчего я решил обрабатывать существующую в WP функцию, а не использовать свою. Всё оттого, что подавляющему большинству пользователей WP, из числа обычных блоггеров, задача поменять одну строчку в шаблоне может показаться невыполнимой. И в этом нет ничего зазорного или обидного, это совершено нормально, тем более что разработчики WP делают многое, чтобы это не было камнем преткновения. Однако, на данный момент, ситуация такова, что плагины с простым функционалом пользуются большей популярностью, если их установка понятна и не требует особых усилий. Потому моё решение делать плагин максимально простым в установке (из административной панели закинул архив, нажал кнопку «активировать» и всё) — вполне логично.

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

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

К каждому своему плагину я буду прикладывать русскоязычный readme.txt (англоязычный всё равно надо будет вкладывать, таковы требования сообщества WP, если вы решитесь, рано или поздно, выложить плагин на wordpress.org), в котором буду сообщать о том, что как только пользователь включил плагин — необходимо в ту же минуту посмотреть, как он работает. Это помимо всей необходимой информации, например, о том, как установить, историю изменений и прочее. Вы удивитесь, какое количество людей включает по дюжине плагинов за раз, а потом, естественно, не знает, что с чем конфликтует.

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

К слову сказать, авторы многих плагинов, которые не правят существующий вывод стандартных функций WP, стараются сделать установку своего функционала максимально простой. Для этих целей используются, и довольно часто, shortcut’ы. Лишь редко, когда возможности использовать шоткаты нет (старые темы, нестандартные места вывода контента на странице и т.п.), приходится просить пользователя править код его шаблона. Если есть возможность, но автор не упростил установку плагина, то я считаю его недальновидным.

Ещё стоит отметить то, что эта запись касается тех плагинов, которые модифицируют, так или иначе, стандартный вывод WP. Если ваш плагин несёт в себе функционал, который в WP не заложен вовсе, то необходимо просто соблюдать осторожность в назывании функций (читайте документацию на wordpress.org). А если ваш плагин дополняет вывод стандартной функции (например вывод сразу после content();) — потрудитесь основательно проверить, как это выглядит на обвешанном плагинами блоге.

Так же можно почитать:



# 23 March 2010 в 15:09

zanna_zaraza

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

# 23 March 2010 в 22:06

neogot

мда…проблема совместимости, это извечная проблема, постоянная головная боль. Спасибо за статью и за разъяснения!

# 24 March 2010 в 0:21

Дмитрий Волотко

@zanna_zaraza — проще и быстрее попросить меня, если уж когда-нибудь надумаешь.

# 24 March 2010 в 2:33

zanna_zaraza

@absolvo, тут интерес в поковыряться – но в этом же и лень =) в любом случае, спасибо.

# 24 March 2010 в 10:33

Pavel

Очень правильные ты вопросы поставил при написании плагина! И решил их на мой взгляд тоже правильно! Думаю, как-нить твой плагин нужно испытать на деле!

# 24 March 2010 в 11:51

Неспамер

Проблема совместимости играет большую роль, особенно сейчас, когда планируется выход Woprdpress 3.0. Многие плагины полетят :-(

# 24 March 2010 в 16:15

Gekatj

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

# 24 March 2010 в 17:29

Василий Островский

Угу, Woprdpress 3.0 проблем еще принесет не мало. Спасибо за аналитику в посте, Дмитрий. Приятно читать.

# 25 March 2010 в 9:56

Дэлириум

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

# 25 March 2010 в 11:46

Alex

А когда выложите плагин?
интересно посмотреть и попользоваться

# 25 March 2010 в 14:40

GameProfy

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

# 25 March 2010 в 20:35

Ellka

Спасибо за важные замечания! Совместимость важнее это 100%! С удовольствием потестирую ваши плагины.

# 26 March 2010 в 10:54

Игорь

А где сам плагин-то?)

# 26 March 2010 в 12:25

Vasily S.

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

# 26 March 2010 в 13:10

Андрей

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

# 26 March 2010 в 16:18

Николай

Интересно было бы посмотреть на Ваш плагин, а еще более интересней было бы его протестировать!

# 28 March 2010 в 17:27

Darkin

И мне было хотелось “прощупать” ваш плагин. Выкладывайте поскорей!

# 29 March 2010 в 1:23

molodoy

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

# 29 March 2010 в 13:25

jackyfox

Долгое время поглядываю в сторону собственноручного написания плагинов для WP. Часто бывают задачи требующие нестандартного подхода, и не всегда находится уже готовый плагин. Исправление шаблона – решение, но лишь в случае одного-двух блогов. Плагин, конечно же, универсален.
Ваше емкое описание общих сторон этого процесса пришлось весьма кстати.

# 30 March 2010 в 14:29

Огородник

Жду плагин. Хотелось бы по тестировать :)

# 2 April 2010 в 15:50

dv

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

# 3 April 2010 в 20:08

Nordvind

Насчет плагина – не логичнее было бы вводить твиттерный ник отдельным полем? И выводить его внизу комментария, к примеру. Ну, а вообще – удачи в девелопинге)

# 6 April 2010 в 19:32

bity

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

# 6 April 2010 в 22:57

Serg

как скачать?
киньте линк плз.. буду благодарен

# 7 April 2010 в 10:09

Евгений

Спасибо за статью..помогла разбраться

# 7 April 2010 в 16:01

Дмитрий

Я считаю, что при обработке стандартных функций лучше обойтись уже проверенными качественными плагинами, ну или на их основе что-нибудь делать, при необходимости. Заповедь: не ломалось – не чини тут к месту :). Да и ещё стоит проводить серьёзный анализ целесообразности использования того или иного плагина, да и вообще наличия какой-то функции. Ведь порой искать проблему в совместимости не намного легче написания собственного движка. Я сам , вместо установки плагина иногда, вставлю кусок кода в шаблон, если знания позволяют. WP писался для определённых задачь, и попытка внедрения чего-то так сказать, чужеродного может закончится плачевно. Спасибо за статью, кстати как-то об этом не задумывался.

# 9 April 2010 в 12:44

postman

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

# 10 April 2010 в 1:01

Андрей

Да,очень интересно,но это пожалуй не для меня.

# 10 April 2010 в 6:39

Alex

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

# 10 April 2010 в 19:42

Антон Сухоруков

Alex, согласен, мне тоже нравится, хотя к DLE больше приноровился…

# 12 April 2010 в 7:11

Новгородец

А приведенные модификации плагинов не ухудшат ситуацию с безопасностью всей системы?

# 12 April 2010 в 9:07

Олег

Да сложная это штука… хотя нужно как нибудь попытаться сделать что то простенькое, но свое

# 13 April 2010 в 22:25

Duna

Ну дальше логичное решение это расширить функционал не только на твитер, но и на ЖЖ и другие соц сервисы.

# 15 April 2010 в 14:48

artgraphite

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

# 15 April 2010 в 20:00

TigraM

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

# 16 April 2010 в 23:13

Строитель

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

# 16 April 2010 в 23:16

Непознанный

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

# 17 April 2010 в 19:13

Хэннер

Простите, а вы уже выкладывали что-то на wordpress.org?

# 19 April 2010 в 14:18

Дмитрий Волотко

@Хэннер, да, конечно.

# 19 April 2010 в 15:54

ncuKC

А сам плагин будет выложен?

# 19 April 2010 в 16:27

Onsense

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

# 21 April 2010 в 12:24

Weblancer

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

# 22 April 2010 в 10:35

evgb4

Конечно конфликты с плагинами встречаются часто. И все это по моему от недостаточного тестирования плагина перед выкладыванием его для общего пользования.

# 27 April 2010 в 20:21

DJ

Многие сейчас в качестве урлов используют страницы вконтакте.
Можно и для вконтакте специальное окошко сделать.

# 29 April 2010 в 10:41

галина

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

# 29 April 2010 в 16:30

Gregory

А что ? с помошью многих плагинов можно изменить wp до не узнаваимости и по функционалу тоже

# 1 May 2010 в 20:53

Sergej

Просто выходит новая версия wordpress и могут плагины быть не совместимы у меня такая проблема с wp-polls.2.50 опросом не хочет работать с wordpress 2.9 хотя с 2.8 всё работало :) Благодарю за статью

# 5 May 2010 в 15:00

Syt

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

# 5 May 2010 в 21:54

Алекс

Хорошая статья. Тут в комментариях верно подметили – при выходе новой версии WP многие плагины вполне могут полететь. Я бы пока подождал выхода (часа “Ч”) и не выкладывал его :)

# 8 May 2010 в 5:25

ITguru

Использование shortcut – это “непрофессионально”. Помню установку плагинов на форум phpBB, там одни shortcut, после чего обновить новую версия нельзя.

# 8 May 2010 в 22:46

Дмитрий Волотко

@ITguru шоткаты имеют совместимости, как обратную, так и в последующих версиях.

# 18 May 2010 в 17:54

Ксения

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

# 20 May 2010 в 8:45

Катерина

Ох-хо-хо! Похоже мне с таким никогда не разобраться) Здорово, что для таких чайников, как я, придумали бесплатные онлайн-конструкторы. Я вот сделала себе с помощью конструктора Taba сайт и довольная, как слон:))) Пока не вижу лично для себя разбираться с движками типа WP?

# 21 May 2010 в 9:38

seven

stef33, мне кажется джумла намного удобнее, для нее столько плагинов в сети валяется. Про какие плагины ты говоришь?

# 23 May 2010 в 1:05

Надежда

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

# 23 May 2010 в 13:01

cross

Чем мне не нравится WordPress как разработчику, так это как раз проблемой совместимости в различных версиях, а в целом система все равно однозначно успешная и хорошо сделанная.

# 14 June 2010 в 17:04

Иван

Спасибо за статью! Лично у меня с плагинами для Вордпресса вечные рамсы.
Теперь хоть что-то прояснилось.
П.с. От спамеров прикольная вещица. Не подскажешь как такую сделать?

# 15 June 2010 в 10:43

jobgomel

Ну собственно ничего толкового не было описано. Просто мысли в слух. Лучше бы выложил список стандартных функций которые стоит обходить и еще чего там. Небольшой набросок как строить свой плагин. Так сказать небольшой мануальчик для начинающих. Если честно начинал читать с надеждой что в середине статьи начнешь описывать структуру построения плагина. Разочаровался…
Просто сам раньше плагины не писал, только правил ошибки и так далее. Но когда нибудь придется что-то написать, а знаний в структуре плагинов WordPress пока нету… И тут не приобрел их… Жаль…

# 28 June 2010 в 12:33

chii

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

# 1 Augu 2010 в 17:42

Павел

Да вообще WP и его плагины – самое лучшее что придумано для веб-мастеров, заметно облегчили работу во всем, даже начинающие веб мастера уже справляются с этим дело!

# 5 Augu 2010 в 7:48

Трофим

Прочитал, интересно попробовать….но и как, наверное, рядовой пользователь…работаю с дизайном, но редактировать плагины и коды приходиться редко..блог бывает тормозит….и поэтому такие вопросы с совместимостью и ускорением блога для меня всегда интересны.СПАСИБО!!!

# 5 Augu 2010 в 14:57

Serg1o

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

# 7 Augu 2010 в 1:44

Chebotar

Правильно, что Ваши статьи имеют оптимальное соотношение технической стороны и возможностей рядового пользователя. Не открою Америку, если буду утверждать, что 70-80 процентов пользователей “ни в зуб ногой” в технических вопросах, как говорится, “чайники”.
Поэтому мне кажется, что именно интересы неопытных пользователей нужно учитывать при создании ПО. В первую очередь, а профессионалы и так разберутся!
Если у “чайников” не будет практических проблем с созданным Вами ПО, они “отплатят” сторицей, массово его используя, покупая и расхваливая знакомым! И таких пользователей – подавляющее большинство!

# 8 Augu 2010 в 22:11

kreatorbook

Когда заинтересовался сайтостроением поставил себе wp и был приятно удивлен, как в нем легко расширяется функционал. Через год решил попробывать сделать сайт на joomla и как сказал выше Павел “WP и его плагины – самое лучшее что придумано для веб-мастеров”. Владельцы сайтов на joomla нервно курят встороне, на себе испытал понятие “конфликтов” плагинов между собой, причем зачистую плагины (или модули) делают совсем разные вещи. Как элегантно для wp2.7 решено чпу.
Автору блога: хотелось бы продолжения или серию статей с примерами

# 10 Augu 2010 в 2:36

ivolga

Что ни говори, а плагины под WP пистаь куда легче, чем под джумлу – меньше косяков вылазит. Но это, конечно, только мое ИМХО

# 12 Augu 2010 в 0:37

Ева

Мне тоже вордпресс все больше и больше нравится именно со стороны технических решений. Я как неопытный пользователь очень быстро со всем разобралась. А вот с джумлой уже посложнее было.

# 23 Augu 2010 в 20:28

Хитрый Админ

ivolga, плагины под WP писать одно удовольствие, скажу я вам. действия/фильтры позволяют реализовать практически любую кастомную модификацию блога наипростейшим методом. Только сиди и пиши. Никаких копаний в файлах самой WP. Вобще, система плагинов WP кажется мне идеальной. Про документацию, с кучей примеров, вобще молчу…

# 16 October 2010 в 19:22

hookman

Я вот тоже недавно заинтересовался темой создания плагина. Должен признать что WordPress довольно таки удобный движок в этом плане. Из плагина можно перехватить любые действия, добавить своё или заменить исходное на своё. Конфликты иногда заставляют биться сердце чаще:) Особенно когда после установки плагина не можешь зайти на сайт вообще:)

# 2 March 2011 в 17:04

Виталий

По-моему, ты правильные вопросы поставил при написании плагина, да и ответы на них нашёл…

# 17 September 2011 в 1:05

leksseu

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



* Должны быть заполнены.
Из-за дикого спама, и нежелания ставить капчу оставлять ссылку у комментария вообще нельзя. Точно так же нельзя оставлять ссылки в теле комментария.