gikami
@gikami
web программист

Как настроить новый тип записей, свои файлы, ссылки, WP?

Создал новый тип записей 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;
}
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
SpiderPigAndCat
@SpiderPigAndCat
занимаюсь салообразованием
сноси свои коды и используй cptui плагин для категорий и потом гуглить так "создать кастомную такосномию для custom post type"
Ответ написан
solidcreature
@solidcreature
Развиваю сообщество WordPress в Москве
Добрый день.
Как настроить отдельные категории для книг?
- Создать новую таксономию, скажем 'book-category'
- Строку 'taxonomies' => array('post_tag','category'), заменить на 'taxonomies' => array('book-category'),

Как создать файл single-book.php?
Надеюсь правильно понял суть вопроса.
- Создать файл на сервере можно через фтп-клиент, в веб-интерфейсе хостинга, с помощью плагина

Для создания новых типов данных и новых таксономий -- есть отличный сервис, который помогает сгенерировать нужный код: https://generatewp.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы