Создал новый тип записей book, но возникли проблемы с настройкой в файлах и категориях.
Вот код. Взял его с примера самого ВП и подправил с помощью гугла.
Проблемы:
1. Как настроить категории именно для этого типа записей? И сейчас все ссылки категорий ведут на страницу /category/название категории, а нужно на /book-category/ чтобы вывести категории что подвязаны именно к этому типу.
2. Общие файлы записей. Сейчас single.php, и все файлы общие с записями новостей и book. Как сделать отдельный файл single-book.php, чтобы с нуля можно было собрать страницу?
add_action( 'init', 'true_register_post_type_init' ); // Использовать функцию только внутри хука init
function true_register_post_type_init() {
$labels = array(
'name' => 'Книги',
'singular_name' => 'Книгу', // админ панель Добавить->Функцию
'add_new' => 'Добавить книгу',
'add_new_item' => 'Добавить новую книгу', // заголовок тега <title>
'edit_item' => 'Редактировать книгу',
'new_item' => 'Новая книга',
'all_items' => 'Все книги',
'view_item' => 'Просмотр на сайте',
'search_items' => 'Искать книгу',
'not_found' => 'Книг не найдено.',
'not_found_in_trash' => 'В корзине нет книг.',
'menu_name' => 'Книги' // ссылка в меню в админке
);
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true, // показывать интерфейс в админке
'has_archive' => false,
'menu_icon' => 'dashicons-book', // иконка в меню
'menu_position' => 4, // порядок в меню
'delete_with_user' => true,
'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'comments', 'author', 'thumbnail'),
'taxonomies' => array('post_tag','category'),
);
register_post_type('book', $args);
}
function post_tag_for_pages(){
register_taxonomy_for_object_type( 'category', 'book');
}
function post_tag_for_pages2(){
register_taxonomy_for_object_type( 'post_tag', 'book');
}
add_action( 'init', 'post_tag_for_pages' );
add_action( 'init', 'post_tag_for_pages2' );
add_filter( 'post_updated_messages', 'true_post_type_messages' );
function true_post_type_messages( $messages ) {
global $post, $post_ID;
$messages['book'] = array( // book - название созданного нами типа записей
0 => '', // Данный индекс не используется.
1 => sprintf( 'Функция обновлена. <a href="%s">Просмотр</a>', esc_url( get_permalink($post_ID) ) ),
2 => 'Параметр обновлён.',
3 => 'Параметр удалён.',
4 => 'Функция обновлена',
5 => isset($_GET['revision']) ? sprintf( 'Функция восстановлена из редакции: %s', wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => sprintf( 'Функция опубликована на сайте. <a href="%s">Просмотр</a>', esc_url( get_permalink($post_ID) ) ),
7 => 'Функция сохранена.',
8 => sprintf( 'Отправлено на проверку. <a target="_blank" href="%s">Просмотр</a>', esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
9 => sprintf( 'Запланировано на публикацию: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Просмотр</a>', date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
10 => sprintf( 'Черновик обновлён. <a target="_blank" href="%s">Просмотр</a>', esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
);
return $messages;
}