Итак все мы прекрасно знаем, что можно по разному добавлять посты в блог.
Кто-то фигарит из админки.
Кто-то через стороннюю прогу через xmlrpc.php
Кто-то через мыло
Кто-то спец плагинами автонаполняет
Вопрос 1: Я так понимаю что это всё через какую то ведь функцию делается. Через какую?
Вопрос 2: Можно ли как то воздействовать на пост до попадания его в базу? Ну например поставить фильтр там какой нить, который будет вырезать все ссылки. Как это сделать?
p.s. я понимаю, что можно сделать что-то типа:
add_action('the_excerpt', 'no_link_func',10001);
add_action('the_content', 'no_link_func',10001);
Но задача воздействовать функцией no_link_func до того, как в базу попадёт пост. Т.е. чтобы оригинальный текст уже был почищенным.
http://codex.wordpress.org/Plugin_API/Action_Reference
Спасибо Ю.Б вам огромное. Ткнули куда нужно, но поковырявшись я так и не понял как это сделать. Нигде никаких примеров нету. Проверял через плагинчик. В нём функция поставил для проверки:
При отправлении поста выкидывает ошибку
Я так прикинул, что может быть это какой нить массив и тогда решил глянуть, что там и как:
Но мне один фиг при отправлении поста выкидывает ошибку
Пробовал попытаться записать в файл:
Ошибку не выкидывает, а в файл пишет ID поста.
А как воздействовать на сам пост (Название и само содержание (хотя и выдержка тоже)) я так и не понял. Поискал опять же на http://wordpress.org/tags/publish_post и ничего путного не нашёл.
Тяжко то, что я по буржуйске не бельмесо. Благо там читать то нечего, переводчик справляется, но даже при помощи него я не нашёл, как же воздействовать на посты. Повторюсь:
Можно ли как то воздействовать на пост до попадания его в базу? Ну например поставить фильтр там какой нить, который будет вырезать все ссылки. Как это сделать?
Ну дык! Дока гласит "Action function arguments: post ID."
Могу только посоветовать найти какой-нибудь живой плагинчик, ковыряющийся в посте до сохранения оного, и разобрать его по косточкам.
Дык был бы плагинчик, уже бы думаю разобрался ба как и что, а вот нету ведь.
Обращение ко всем. Если кто-то сталкивался с моей проблемой или же встречал подобный (описываемый в этом топике вариант) плагин, то просьба отпишитесь сдесь или подскажите по делу как и что.
Благодарю за благородство
Хм… Сечас просмотрел цепочку постинга. Ан нет там никаких фильтров по дороге (или я недоглядел). Может нужно по ID вынимать пост из базы, перелопачивать и класть взад?
Как сработал фильтр, получаешь из $data его ID и толкаеш в wp_get_single_post(…), а после того как ты грязно надругался над телом беззащитного поста делаешь wp_update_post(…). Должно помочь.
Могу посоветовать разобрать по косточкам 🙂 xmlrpc.php. Много полезного и интересного можно найти. Но вообще фильтры тоже можно использовать, например content_save_pre
Короче по совету Роланда (он же Svolochuga) … привёл плагин к такому виду:
Далее захожу в админку. И делаю новый пост. В посте естественно всталяю для проверки 1.11 и нажимаю отправить.
В результате пост поститься. Замена тоже происходит и всё вроде бы хорошо, но вот именно когда я создал пост и нажал "Опубликовать".
У меня выскакивает http://yourwp.com/wp-admin/post.php
с ошибкой в браузере:
Это в опере. В IE тоже самое. Т.е. от браузера это не зависит. Отключаю плагин и из админки посты постятся как обычно, но замены естественно нет.
В чём касячина? кто знает?
Попробуй типа так:
Тоже самое… странное что-то вториться… главное когда я не делаю никаких преобразований… пост проходит
(комментировал весь плагин и пробовал)
Это я называю "не выдержала душа поэта" 🙂
Спасибо Всем. Ну а в итоге конечно же тёзке
p.s. а всё работатет 🙂
Подскажите как сделать чтобы моя функция отрабатывалась только один раз – когда создался пост.
И чтобы она не отрабатывалась когда пост редактируется.
Пробовал через add_action(‘publish_post’, ‘своя функция’);
Но в этом случае своя функция работает и при редактировании