Как удалить slug из произвольных типов записей?
Здравствуйте, как удалить slug http://site.loc/ blogcard /novaya-zapis-1 из произвольных типов записей?
add_action( 'init', 'register_post_types' );
function register_post_types(){
register_post_type( 'blogcard', [
'label' => null,
'labels' => [
'name' => 'Блог', // основное название для типа записи
'singular_name' => 'Блог', // название для одной записи этого типа
'add_new' => 'Добавить запись в блог', // для добавления новой записи
'add_new_item' => 'Добавление записи в блог', // заголовка у вновь создаваемой записи в админ-панели.
'edit_item' => 'Редактирование записи', // для редактирования типа записи
'new_item' => 'Новая запись', // текст новой записи
'view_item' => 'Смотреть запись', // для просмотра записи этого типа.
'search_items' => 'Искать запись в блоге', // для поиска по этим типам записи
'not_found' => 'Не найдено', // если в результате поиска ничего не было найдено
'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
'parent_item_colon' => '', // для родителей (у древовидных типов)
'menu_name' => 'Блог', // название меню
],
'description' => 'Записи для блога',
'public' => true,
// 'publicly_queryable' => null, // зависит от public
// 'exclude_from_search' => null, // зависит от public
// 'show_ui' => null, // зависит от public
// 'show_in_nav_menus' => null, // зависит от public
'show_in_menu' => true, // показывать ли в меню адмнки
// 'show_in_admin_bar' => null, // зависит от show_in_menu
'show_in_rest' => null, // добавить в REST API. C WP 4.7
'rest_base' => null, // $post_type. C WP 4.7
'menu_position' => 7,
'menu_icon' => 'dashicons-welcome-write-blog',
//'capability_type' => 'post',
//'capabilities' => 'post', // массив дополнительных прав для этого типа записи
//'map_meta_cap' => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
'hierarchical' => false,
'supports' => [ 'title','editor','author','thumbnail','excerpt','custom-fields'], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
'taxonomies' => [],
'has_archive' => false,
'rewrite' => true,
'query_var' => true,
] );
}
https://pressimply.com/blog/rewrite-custom-post-type-to-remove-slug/
https://wordpress.stackexchange.com/questions/203951/remove-slug-from-custom-post-type-post-urls
Гуглом пробовали пользоваться/искать?
Не находило ответы?
для такого есть вы.
Вы проверьте код - отпишитесь, работает или нет.
Если все ок - то отмечайте вопрос решенным.
Иначе я локально буду смотреть, проверять.
Помог этот код. Спасибо
/ remove cpt slug from permalinks function remove_cpt_slug( $post_link, $post, $leavename ) { if ( $post->post_type != 'blogcard'// ваша произвольная запись ) { return $post_link; } else { $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } } add_filter( 'post_type_link', 'remove_cpt_slug', 10, 3 ); // instruct wordpress on how to find posts from the new permalinks function parse_request_remove_cpt_slug( $query_vars ) { // return if admin dashboard if ( is_admin() ) { return $query_vars; } // return if pretty permalink isn't enabled if ( ! get_option( 'permalink_structure' ) ) { return $query_vars; } $cpt = 'blogcard' // ваша произвольная запись; // store post slug value to a variable if ( isset( $query_vars['pagename'] ) ) { $slug = $query_vars['pagename']; } elseif ( isset( $query_vars['name'] ) ) { $slug = $query_vars['name']; } else { global $wp; $path = $wp->request; // use url path as slug if ( $path && strpos( $path, '/' ) === false ) { $slug = $path; } else { $slug = false; } } if ( $slug ) { $post_match = get_page_by_path( $slug, 'OBJECT', $cpt ); if ( ! is_admin() && $post_match ) { // remove any 404 not found error element from the query_vars array because a post match already exists in cpt if ( isset( $query_vars['error'] ) && $query_vars['error'] == 404 ) { unset( $query_vars['error'] ); } // remove unnecessary elements from the original query_vars array unset( $query_vars['pagename'] ); // add necessary elements in the the query_vars array $query_vars['post_type'] = $cpt; $query_vars['name'] = $slug; $query_vars[$cpt] = $slug; // this constructs the "cpt=>post_slug" element } } return $query_vars; } add_filter( 'request', "parse_request_remove_cpt_slug" , 1, 1 );Спасибо за ответ.
Другим это может пригодится, когда столкнуться с подобной проблемой.
Спасибо! Пригодилось!