Удаленно-произвольно|Произвольные поля через шорткод
Давайте пофантазируем.
Предположим, Александр пытается отправить через десктопный клиент LiveWriter пост в Вопрдпресс, но темка, под которой сидит один из его блогов, предполагает, что к каждому посту будет добавлена картинка в духе профессионального блоггинга. Проблема в том, что эта картинка добавляется через произвольные поля, о которых LiveWriter Александра даже и не знает.
Для того, чтобы опять управлять произвольными полями так, как ему вздумается, надо просто установить маленький плагин Customfields Shortcode.
После этого, перед отправкой поста ему надо добавить в пост (лучше в конец) один или несколько таких псевдотегов (шорткодов):
[custom name="имя_произвольного_поля" value="значение_произвольного поля"]
или комментариев вида:
<!--custom name="имя" value="значение_произвольного поля"-->
После чего смело отправить пост. И, о, чудо, в посте само определится нужное произвольное поле, которое можно будет изменить либо через админку, либо через тот же клиент, просто поменяв значение поля value.
Можно и удалить уже имеющееся произвольное поле, сделав значение пустым:
[custom name="имя_произвольного_поля" value=""]
<!--custom name="имя" value=""-->
А можно и проще, любой из этих вариантов:
[custom name="имя"]
<!--custom name="имя"-->
При этом изменения будут доступны всем посетителям сразу, без лишних телодвижений — плагин подключается к штатным механизмам, поэтому и кеш обновляется своевременно.
И неважно даже чем пользуется Александр — управление через шорткоды становится доступным через любой механизм постинга — через админку, клиенты, через почту.
Один маленький нюанс — комментарии <!--custom--> использовать все же лучше. В случае отключения плагина они не станут видны (даже если код вставлен с помощью визуального редактора, который заменяет угловые скобочки на HTML-сущности), тогда как квадратные скобочки вылезут наружу.




Всё-таки такой синтаксис удобнее, в который раз убеждаюсь:
<!--custom name="…" value="…"-->
@Vladimir: черт, точно. сейчас добавлю второй вариант.
А, нет, тут почти без разницы — добавление через визуальный редактор таких комментариев всегда превращает скобочки в сущности. Т.е. в половине случаев эти псевдокоды все равно вылезут наружу.
В общем, до записи в базу этот косяк можно править. Теперь доступен и вариант с коментариями (как я, черт, о них мог забыть)
Что по мне, то визуальный редактор — зло :-)
@Vladimir: что по мне, надо рассчитывать на тех, кто его не выключает =(
Александр говорит что «шоке!»
/можно на сайт сторонних разработчиков под livewriter запостить это.
Я сильно-сильно отказался от кастом-филдс в пользу использования нативных Wordpress аттачей.
Отлично работает — даже при постинге через LW.
Единственная проблема возникает, когда изображение в посте есть — но как сущность, а не как реальность, данная нам в ощущениях атачей Wordpress.
Как пример — просто фотка с flickr уже не будет приложением в WP, поэтому надо наверное изыскать другой метод и у меня уже есть наработка
@blogomober: смысл? это не плагин для livewriter'а.
@автор, ну я когда заморачивался как это сделать, то почитал англоязычные блоги и форумы. Они очень ждут такой фичи в LW, и можно пока как альтернативу предложить.
@blogomober: ссылки, если остались, дай, плиз. Я пока запрос на добавление плагина на офсайт сделаю. А вообще надо будет покопаться в самом LW, к нему же вроде плагины можно писать.
Залил на оф сайт вордпресса, с английским описаловом (ой, косячным!) wordpress.org/extend/plug...stom-shortcodes/
Можете делиться с англоязычными друзьями.
Интересно, но непонятно. В описании — требования — wp202 или выше. Но плаг уже на 233 отказался работать? Так он мульти или только для последних версий?
@awtor: вообще обновляться надо, но — мой косяк :). По привычке поставил, а посмотреть, с какой версии там шорткоды появились, забыл. А вообще, условные комментарии при этом должны работать. Или плаг выдает какую-то ошибку?
@awtor: кстати, да, — интересно, а на 2.3 нормально будет работать ВП Типограф — iskariot.ru/wordpress/typo/? Если не сложно, попробуете?
1. Выдает сразу ошибку в add_shortcode ('custom','
А у сеня как на грех еще пара блогов на 233. Плагин рульный, не надо после лива лезть на блог и менять еще поля оллинван и часовых и прочих нужных полей.
2. Скачал, попробуем.
Ну я не понимаю, зачем такая старая версия?!
Плагин для кастомов обновил. Вот только в старых версиях можно будет пользоваться только условными комментариями, но не [custom].
Хехе, а типограф тоже будет ругаться — найди строчку с add_shortcode и тупо ее сотри, если что %)
1. wp233 еще очень распространен. Не все желают переходить на тормознутую админку 27.
2. В чем глубокий смысл add_shortcode и
function cfsc_remove_shortcode ?
не проще ли
add_filter ('the_content','cfsc_remove_shortcode');
function cfsc_remove_shortcode ($content){$content=preg_replace ('~\[custom\s(.*?)\]~i','',$content);return $content;}
по аналогии. И работает и с 233 и с 271
Для 233 чуть еще изменить
else{add_post_meta ($post_ID,$name,$value,true) or update_post_meta ($post_ID,$name,$value);}
И все проблемы совместимости решены + можно использовать и [ и -->
3. Неясно применение " и ' Если в псевдо указать ' — плагин не замечает изменений. В то же время если в тексте будет ссылка с "" плагин вставку обрежет по ссылке. Изврат получается — псевдо только в " а ссылки в '
Об этом я уже думал — сменю.
Не понял примера с мета — в 233 произвольные поля работают как-то иначе?
И про кавычки — имеешь в виду те кавычки, что используются в качестве ограничителей в атрибутах шорткода и условного комментария?
Так. Обновил — убрал шорткоды полностью (а, к черту, в типографе тоже на прег-реплейсы перейду), проверку на добавку произвольного поля тоже сделал, ну и в шорткодах можно теперь использовать разные кавычки как в html — т.е. если надо, чтобы в значении была двойная кавычка, его можно взять в одиночные.
Спасибо за ваш интерес и помощь %)
Да, если просто апдейт — wp233 не воспринимает изменение и добавления.
С кавычками — большой фенкс.
Ну, было бы за что. Сам искал похожее. Сразу куча
проблем отвалилась.
@awtor: привет. на своем 2.3 не протестишь исправленный плагин кросспоста? iskariot.ru/wordpress/remix/#lj-crosspost — только посмотреть, правильно ли добавляются кнопки в визуальный редактор? Буду благодарен %)
Здравствуйте!
Ваш плагин — просто сокровище для тех, кто использует WLW. Но у меня он не заработал :( Не получилось добавить произвольные поля ни в 2.6, ни в 2.7 версии Wordpressa. Не подскажете, возможно что-то надо поменять в коде плагина?
@Dashline: только что проверил — телепаты еще в отпуску и все прекрасно работает.
Ой, как я рада, что вы со мной общаетесь :о)
Я просто даже не знаю, как описать проблему, потому что просто нет никакой реакции у программы.
Ведь после установки-активации этого плагина в WP, а затем отправки записи из WLW с шорткодом внизу вида
<!--custom name="имя" value="значение_произвольного поля"-->, когда я захожу потом админку и смотрю запись, у нее ведь должны быть заполнены дополнительные поля?У меня было подозрение, что что-то с кодировкой, но я полный профан и в коде почти совсем не разбираюсь. Вот строка из кода плагина — тут с кодировкой все хорошо?
$content=preg_replace('~(\|>)~i','<!--custom \\2-->',$content);@Dashline: да, должны быть. Было бы хорошо, если бы вы привели бы мне скриншоты, что вы отправляете через ВЛВ, и что видно при редактировании поста. И попробовали прямо через админку добавить, скажем, такое:
<!--custom name="вав ав" value="ва вава"-->(без кодов обертки code, конечно)Кодировка здесь совершенно не причем.
Исходный кусок должен быть вот таким (но это, наверное, в комментарии сожрало, т.к. не поставили тег кода):
preg_match_all('~(\<|<)!--custom(.*?)--(>|>)~i',$post->post_content,$matches2);Более того, полагаю, что вставляли вы не HTML сущности, а непосредственный код? То есть вставка комментария происходила в закладке «Просмотр исходного кода»
Какое счастье, у меня все заработало! :)
Простите меня за беспокойство. Я просто поленилась впечатывать код с клавиатуры и скопировала его из окна фаерфокса из пояснений к плагину в админке.
И не посмотрела, что видно после этого в самом WP. А там почему-то было по четыре дефиса с каждой стороны вместо двух. Извините меня за блондинистость. Полезла скриншот делать и увидела.
После впечатывания всех символов шорткода с клавиатуры все сразу заработало.
Огромное спасибо вам за плагин — он уникален, весь буржунет стонет от невозможности произвольные поля заполнять из WLW, но никто кроме вас не написал такой полезной штуки. И отдельное спасибо отзывчивость. С вашего позволения напишу о нем со ссылкой на вас у себя в блоге.
@ioni: это не должно играть никакой роли вообще, так и задумывалось, что можно вставлять через что угодно.
@Dashline: ситуация с четырьмя дефисами странная, конечно, но ладно :). Не за что, пользуйтесь на здоровье, пишите. Если бы мне не было лень, сам бы пропиарил на паре буржуфорумов (был бы благодарен за ссылки на стоны).
@автор: ссылки на стоны покидаю завтра, не сохраняла, но восстановлю.
когда искала плагин — начала с буржунета. там каждый изворачивается, как может (видела очень странный вариант, например — www.kisaso.com/custom-fie...ows-live-writer/).
но большинство просто приходят, к примеру, в очередной обзор по WLW и пишут про невозможность работать с произвольными полями, на что им рекомендуют обычно «сохранить черновик с дальнейшим редактированием в сети» (есть такая опция у WLW).
techie-buzz.com/featured/...r-wish-list.html (в тексте статьи)
weblogtoolscollection.com...ows-live-writer (в комментариях)
nspeaks.com/398/tip-to-us...ter-effectively/ (в комментариях)
www.makeuseof.com/tag/7-g...ive-writer-2009/ (в комментариях)
www.thechetan.com/2009/07...riter-wordpress/ (в тексте)
jcheng.wordpress.com/2008...r-and-wordpress/ (в комментариях)
www.webdesignerdepot.com/...op-blog-editors/ (в комментариях)
boards.msn.com/thread.aspx?threadid=1082889
@Dashline: ага, спасибо.
А я тут подумал такую мысль — смысл плагина в том, чтобы добавлять custom field, так?
Так отчего бы после этого не удалить сам шорткод из поста?
Кстати, да, как-то мне такая мысль раньше в голову не пришла. (с другой стороны, если это делается для сторонних клиентов — то в них как раз будет непонятно, есть ли кастомфилд у поста, или нет; ну я не знаю, есть ли в таких клиентах возможность редактирования, или нет, сам ни разу не пробовал)
Сторонние клиенты, да, как же.
Можно совсем уж зверский функционал тогда встраивать — отдавать ошибку, если (после добавления) встроенное поле не присутствует (или не равно тому, чему надо).
Кстати, как обстоит дело с повторяющимися полями с одинаковыми именами? Я просто спрашиваю, мне не особенно это надо (в отличие от верхнего варианта, когда я бы предпочел чистый код без комментариев в нем — а том поля у меня иногда бывают большими...)