Я использую последнюю версию WordPress (3.1.1). Мне кажется, или WordPress теперь автоматически связывает адреса электронной почты в виде простого текста?
Я пишу jdoe@email.com
как комментарий, и он отображается как<a href="mailto:jdoe@gmail.com">jdoe@gmail.com</a>
Я работаю над плагином, который фильтрует текст комментариев с помощью get_comment_text
фильтра, а затем впоследствии изменяет представление адреса электронной почты. Раньше этот плагин работал нормально, но, как я уже сказал, теперь WordPress автоматически связывает адреса электронной почты.
Я полагал, что WordPress будет следовать своим собственным правилам и делать это с помощью фильтра, поэтому я пошел дальше и добавил уровень приоритета к своему собственному фильтру, 9000
полагая, что таким образом я могу заставить свой срабатывать после того, как WordPress закончит совать свой нос во что-то. это не его дело, но это не сработало.
Мне интересно, знает ли кто-нибудь здесь способ обойти эту ситуацию или, по крайней мере, может ли кто-нибудь, знающий систему, указать мне источник, который отвечает за это автоматическое связывание.
В моем плагине уже есть функциональность для работы с электронными письмами в виде простого текста, но он тоже не работает, потому что после того, как он изменяет представление письма в виде простого текста, WordPress затем идет и связывает его.
РЕДАКТИРОВАТЬ : Один Trick Poney указал мне на то, make_clickable
что за это отвечает. Он действительно добавлен как фильтр в wp-includes/default-filters.php
, с приоритетом 9
. Тем не менее, я уже пытался, как я упоминал выше, установить уровень приоритета, 9000
чтобы заставить мой плагин работать после того, как WordPress сделал свое грязное дело. Это не сработало, потому что я получаю оригинальный нефильтрованный контент? Я полагал, что получу отфильтрованный контент (то есть уже связанный контент).
Затем я пошел дальше и активировал фильтр простого текста (который применяется к электронным письмам с открытым текстом) и присвоил ему приоритет -9000
, чтобы он попадал раньше make_clickable
, но опять же из этого ничего хорошего не вышло, потому что когда make_clickable
он срабатывал, он продолжался. и подумал, что было бы неплохо связать ссылки, которые я создаю. Он «связывает» URL-адреса в href
атрибуте ссылки, что приводит к очень беспорядочному выводу.
Таким образом, кажется, что лучше всего было бы войти после того, как WordPress сделал свое дело, после того, как make_clickable
он сработал, но, как я уже сказал, по какой-то причине, хотя я применяю свой фильтр с уровнем приоритета 9000
, по сравнению с make_clickable
уровнем приоритета которого только 9
, вроде ничего не происходит. Я продолжу расследование.
Я могу понять и представить, что разработчики WordPress пытались сделать его более удобным для пользователя, но это, похоже, вызвало некоторые проблемы с крайним случаем (например, связывание атрибутов href в уже существующих ссылках).
Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ 2 : Да, я только что протестировал свой фильтр с уровнем приоритета 9000, который, как мне кажется, должен запускаться после WordPress make_clickable
, уровень приоритета которого равен 9. Мой фильтр получает неизмененный/нефильтрованный контент. Я не знаю, как и почему это происходит. Я бы предположил, что имея более поздний приоритет, я получу контент, поскольку он до сих пор был изменен фильтрами с более высоким приоритетом, иначе возникали бы такие ситуации (коллизии?), как эта.
это
make_clickable
фильтр, примененный к comment_text. добавьте свой фильтр с-9000
приоритетом или что-то в этом родеСпасибо One Trick Pony, я ценю это! Я только что узнал, что это не ограничивается адресами электронной почты, что это также относится к URL-адресам. Я расследую. Если это сработает, я дам вам знать, если вы хотите сделать это ответом.
Я добавил больше информации в свой пост на случай, если у вас возникнут какие-либо идеи.
я не думаю, что есть крючок называется
get_comment_text
🙂Я заметил, что фильтр WordPress
make_clickable
был прикреплен кcomment_text
хуку фильтра, а неget_comment_text
, что я и использовал некоторое время. Ранее я исследовал, может ли это иметь место, особенно выясняя, в чем разница между ними, и я думаю, что читал что-то обcomment_text
использованииget_comment_text
, так что, возможно, он делал что-то более одного раза, что привело к странному результату, который я нашел.Я решил эту проблему, изменив свой фильтр, чтобы вместо этого подключиться
comment_text
, таким образом, приоритет имел бы значение (дух), и оставил уровень приоритета моего фильтра равным 9000. Предварительные тесты показывают, что все работает. Таким образом, мне не нужно беспокоиться о том, что wordpress изменит мой вывод непредсказуемым образом, вместо этого я могу просто работать с тем, что извергает wordpress. По крайней мере, так я знаю, с чем я могу работать и с чем я не могу работать.Еще раз спасибо одному трюковому пони за наводку.