Madgod
@Madgod

Как добавить ID в имя поста при его создании?

Когда человек заполнят форму на сайте и отправляет её, создаётся заказ. И добавляется пост в админку, таким образом:
$post_data = [
    'post_title'        => 'Новый заказ',
    'post_status'	=> 'pending',
    'post_author'	=> 1,
    'post_type'		=> 'mail',
  ];
$post_ID = wp_insert_post( $post_data );

И далее добавляется ряд метаполей.
Я хочу чтоб имя поста было - "Новый заказ № {ID поста}".
Я конечно могу после вышеописанного кода сделать опять wp_insert_post()и поменять имя. Но мне кажется что должно быть более правильное решение.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@weart
Все просто. Также делает woocommerce:

$purchase_information = array(
	'post_title' => '',
	// ...
);						

$purchase = wp_insert_post( $purchase_information );
$my_purchase = array();
$my_purchase['ID'] = $purchase;
$my_purchase['post_title'] = __( 'Покупка №' ) . ' ' . $purchase;
wp_update_post( wp_slash( $my_purchase ) );
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
ID поста генерируется после того, как сам пост был добавлен в базу данных. Другими словами, пока вы не создали пост -- у него просто нет ID. Так что поставить ID в заголовок можно только в два шага: создать пост и затем обновить его заголовок
Ответ написан
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Могу предложить вам костыльное решение в виде фильтра the_title, типо такого

add_filter( 'the_title', 'add_event_time_in_the_title', 10, 2 );
function add_event_time_in_the_title( $title, $post_id ) {

	// добавляем время проведения мероприятий после заголовка
	if ( get_post_type() === 'event' ) {
		$event_time = get_post_meta( get_the_ID(), '_event_time', true );
		$title = $title . ' ' . $event_time;
	}

	return $title;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы