Повторяющаяся проблема с slug / permalink

У меня есть сайт, на котором перечислены концерты и фестиваль, и некоторые из них возвращаются каждый год. Я сделал обычную таксономию, где вы можете добавить сообщение в год (2017, 2018, 2019 и т. Д.). Я также добавил пользовательскую таксономию к слизу (/ показывает /% архив% /% postname% / – где архив – это год, в котором находится сообщение).

Это работает так, как должно, теперь URL: / 2017 / имя-шоу или / 2018 / название фестиваля

Но когда я снова добавляю фестиваль на следующий год, я все равно получаю URL-адрес с -2 в конце, потому что сообщение уже выполнено, хотя оно должно быть / 2017 / festival-name и / 2018 / festival -name вместо / 2018 / festival-name-2

Я что-то упускаю, или это просто невозможно сделать с дублирующимися именами / слизнями?

Вы можете сделать это с помощью настраиваемого плагина Permalinks , вам нужно добавить полный пул вручную [shows/2017/any] .

Он также позволяет настроить постоянную ссылку: [anyname/another/2017/example/slug] .

Вы все равно должны использовать этот плагин, если его деактивировать, все постоянные ссылки вернутся к умолчанию [shows/2017/%postname%]

Легко манипулировать slug сообщения, прежде чем записывать его в базу данных. Если концерты и фестивали происходят раз в год, вы можете использовать тэг% postname% для постоянной ссылки. Ваш URL-адрес будет выглядеть, например, http://yoursite.com/2016-concert-name/ . Добавьте этот код в functions.php:

 function wpse_filter_handler($data, $postarr) { if(!is_numeric(substr($data['post_name'], 0, 4))) { $catids = $postarr['post_category']; if(count($catids) > 1) { $catobj = get_category($catids[1]); $data['post_name'] = $catobj->slug . '-' . $data['post_name']; } } return $data; } add_filter( 'wp_insert_post_data', 'wpse_filter_handler', 10, 2 ); 

В этом примере используются категории, но для пользовательских таксономий логика точно такая же. Конечно, дополнительные проверки должны быть включены в код выше, в зависимости от ваших фактических настроек.