Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Для Wordpress написан простенький скрипт. Суть его в том, чтобы добавлять в конце URL пользовательской типа записи post_id. 

Что нужно сделать. Скрипт работает как надо, но проблема в том, что при редактировании уже ранее опубликованных постов к URL добавляется post_id. Нужно сделать так, чтобы post_id в конце URL срабатывал только на момент первой публикации поста, при дальнейшем редактировании поста скрипт уже работать не должен. 

И есть еще одна проблема, если заголовок поста заполнить в последнюю очередь в итоговом опубликованном посте вставляются только цифры или chernovik, это также надо поправить.

В итоге нужна стандартный принцип работы Permalink, но с добавлением цифр post_id в конце.

function add_id_to_url($post_id, $post, $update) {

   // убираем зацикливание

   remove_action( 'wp_insert_post', 'add_id_to_url' , 10);

   // получаем пост

   $post = get_post($post_id);

   // обрабатываем только в новых постах 

   $is_draft = substr($post->post_name, 0, 9) == 'chernovik';

   if ($post->post_type=='news' &&($is_draft || !$update)) {

      // обрабатываем заголовок другими хуками, если есть

      $post_title = sanitize_post_field( 'post_title', $post->post_title, $post->ID, 'display' );

      // формируем урл

      $slug = $post_title.'-'.$post_id;

      // записываем новый урл

      $my_post = array();

      $my_post['ID'] = $post_id;

      $my_post['post_name'] = $slug;

      wp_update_post( $my_post );

   }

   // восстанавливаем хук

   add_action( 'wp_insert_post', 'add_id_to_url', 10, 3 );

}

add_action('wp_insert_post', 'add_id_to_url', 10, 3);

8 лет назад
itadesign
Эльдар 
32 годаУкраина
12 лет в сервисе
Был
2 месяца назад