У меня есть плагин, и я хотел бы иметь возможность выполнять публикацию содержимого через некоторые фильтры, прежде чем он будет сохранен в базе данных. Глядя на API плагина , я вижу, что два крючка выглядят так, как будто они могут быть полезны:
save_post
wp_insert_post
Единственная проблема заключается в том, что, похоже save_post
, не нужно возвращать переменную, и поэтому я не знаю, как фильтровать содержимое, и wp_insert_post
выглядит документированным.
Я хотел бы сделать что-то вроде этого:
add_action('whatever_hook_name','my_function');
function my_function($post_content){
return $post_content.' <br> This post was saved on '.time();
}
Я собираюсь сделать что-то более полезное, чем добавление метки времени, а именно запуск некоторых фильтров регулярных выражений, но это общий тип фильтра / действия, который я пытаюсь добавить.
Обновить
Обратите внимание, что я хочу перехватить данные о том, как они сохраняются в базе данных, а не о том, когда они отображаются в сообщении (например, не добавляя фильтр в the_content
)
This post was...
" 2), таких как этот, который должен быть сохранен как мета-значение сообщения :-) Кстати:save_post
вызывается после сохранения данных, поэтому после него был сохранен в базе данных (не то, что вы хотите).Ответы:
Wp_insert_post_data фильтр может сделать это:
источник
add_action
хотя вместоadd_filter
. также вашиwpse35931_filter_post_data
иfilter_handler
несовместимы ...wp_insert_post_data
работает, но немного подавлен для того, что OP (и, возможно, другие) хотят достичь. Более простой вариант в этой ситуацииcontent_save_pre
соответствует рекомендациям @drzaus.wp_insert_post_data
фильтра: developer.wordpress.org/reference/hooks/wp_insert_post_dataИспользуйте фильтр
content_save_pre
точно так жеthe_content
- разница в том, что он работает, когда сообщение сохраняется, а не отображается.http://codex.wordpress.org/Plugin_API/Filter_Reference/content_save_pre
источник
Вы также можете проверить на крючок
pre_post_update
источник
Добавьте следующий код к активной теме заменить
<shell>
с[shell]
перед сохранением:источник
Если вы просто хотите добавить что-то похожее в конце всех постов, я бы посоветовал вам использовать
the_content
фильтр.источник