Intereting Posts

Используйте одну и ту же структуру константной ссылки на основе даты для всех типов сообщений

Есть ли способ использовать точно такую ​​же структуру константной ссылки на основе даты для всех (неиератических) типов сообщений на сайте, включая сообщения и пользовательские типы сообщений?

Я бы хотел, чтобы все типы сообщений имели формат /%year%/%monthnum%/%day%/%postname%/ , поэтому тип сообщения не отображается в URL-адресе.

При использовании структуры константной привязки по умолчанию пользовательский пост-тип следующего кода успешно удаляет тип сообщения с постоянной ссылки (рискуя вызвать проблемы со связанными именами почты, но я могу с этим жить), но я не могу понять, что я необходимо сделать, чтобы установить постоянную ссылку на использование структуры даты.

 class simons_permalinks { function __construct() { add_action( 'pre_get_posts', array( $this, 'pre_remove_slug' ) ); add_filter( 'post_type_link', array( $this, 'remove_slug' ), 10, 3 ); } function pre_remove_slug( $query ) { if ( ! $query->is_main_query() ) return; if ( 2 != count( $query->query ) or !isset( $query->query[ 'page' ] ) ) return; $types = array( 'page', 'post', 'feature', 'opinion' ); if ( ! empty( $query->query[ 'name' ] ) ) { $query->set( 'post_type', $types ); } } function remove_slug( $link, $post, $name ) { $types = array( 'post', 'feature', 'opinion' ); if ( 'post' != $post->post_type and in_array( $post->post_type, $types ) and 'publish' == $post->post_status ) { $pto = get_post_type_object( $post->post_type ); $link = str_replace( '/' . $pto->rewrite[ 'slug' ] . '/', '/', $link ); } return $link; } } // class 

Спасибо, Саймон

Solutions Collecting From Web of "Используйте одну и ту же структуру константной ссылки на основе даты для всех типов сообщений"

Вам нужно будет добавить часть года, месяца и дня в постоянную ссылку сообщения в post_link :

 $link = str_replace( '/' . $pto->rewrite[ 'slug' ] . '/', '/' . get_the_time( 'Y/m/d', $post ) . '/', $link ); 

Это вернет постоянную ссылку, например example.com/2014/07/02/post-name .

Вам нужно будет настроить логику в pre_get_posts чтобы он обрабатывал тот факт, что также будут присутствовать вазы запросов года, месяца и дня.