Здравствуйте. Хочу получить помощь, думаю пишу в нужную ветку. Если нет прошу сообщить куда писать.
Задача сделать заголовки постов публикуемые пользователями в виде: "текст из произвольного поля формы публикации" #IDпоста
Знаю про pre_update_postdata_rcl
Но не могу получить:
1) "текст из произвольного поля формы публикации"
2) IDпоста
Как их получить и применить в фильтре pre_update_postdata_rcl?
Чтоб заголовок был сформирован когда создается пост.
А надо ли редактировать заголовок при публикации? Ведь если вы так сделаете и добавите к заголовку #POST_ID то если юзер еще раз обновит запись - там еще раз добавится #POST_ID.
Посмотрите single.php в папке вашей темы и там должен быть вывод заголовка поста, что-то типо the_title() - и просто после него добавьте нужный текст
Preci сказал(а)
А надо ли редактировать заголовок при публикации? Ведь если вы так сделаете и добавите к заголовку #POST_ID то если юзер еще раз обновит запись - там еще раз добавится #POST_ID.Посмотрите single.php в папке вашей темы и там должен быть вывод заголовка поста, что-то типо the_title() - и просто после него добавьте нужный текст
Это не вариант. Заголовок пользователем не заполняется. Заголовок должен автоматически генерироваться во время создания записи
Я не уверен что в фильтре pre_update_postdata_rcl пост уже вставлен и у него есть ID
Возможно лучше использовать экшен
Тогда уже пост 100% в базе и экшен передаст его ID первым аргументом, и ваши кастомные поля уже то же вроде как к этому моменту вставлены, так что получайте их через get_post_meta и формируйте новый заголовок записи и обновляйте его с помощью wp_update_post
Вопрос был решен таким образом, можно закрывать тему. При этом необходимое название создается только после обновления поста. В моем случае админом при утверждении поста, что и нужно.
add_filter('wp_insert_post_data', function ($data, $id) { if ($data['post_type'] == 'тут тип') { $title_id = get_the_ID(); $title_sub = get_post_meta($title_id, 'тут произвольное поле'); $title = $title_sub[0] . ' #' . $title_id; $data['post_title'] = $title; } return $data; }, 10, 2);