Заранее установленный текст для нового поста в WordPress (the_editor_content)
Заметка как бы не нова и я точно помню, что где-то я про это решение читал, но мне сегодня понадобилось установить предустановленный текст для нового поста и в сети я почему-то не смог быстро найти решение, оказалось проще сделать самому.
Этот хак НЕ работает с новым редактором блоков (Гутенберг). Только с классическим редактором.
В общем, по порядку
Есть произвольный тип записей отличный от post, называется func и мне нужно было сделать так, чтобы при создании нового поста типа func в редакторе WordPress уже был установлен текст-заготовка. Подразумевается, что все посты этого типа шаблонные, поэтому гораздо легче, когда в редакторе уже есть шаблон текста.
Решается эта задача посредствам фильтра, и я это знал, но быстро найти этот фильтр у меня не получилось, да собственно вообще не получилось найти решение в рунете - плохой с меня сыщик.
Нужный фильтр называется the_editor_content - он фильтрует контент редактора WordPress, причем неважно какое поле редактора показывается, будь то при создании/редактировании поста или комментария. Поэтому, проверять следует ли "изменять" текст или нет, мы будем в функции, которую прикрепим к фильтру. Выглядит все это очень просто, вот так:
add_filter( 'the_editor_content', 'new_post_content' ); function new_post_content( $content ){ global $post; if ( ! $post->post_content && $post->post_type == 'post' ) { $content = "Here is some text that should be in the content field in a new post"; } return $content; }
Условием if ( ! $post->post_content && $post->post_type == 'post' ) {
мы проверяем, новый ли это пост (у поста нет контента) и равен ли тип поста post, если условие выполняется, то пишем текст в поле контента, если нет, то просто возвращаем текст.
Вставлять этот код нужно в файл темы functions.php.
Может кому пригодиться.