Сьогодні виходить черговий урок по роботі з системою WordPress.
Тема відноситься до структурування даних сайту, а саме – створення Custom Post Type за допомогою плагіну (як простіше), та за допомогою коду – як ми рекомендуємо.
За допомогою плагіну може зробити любий початківець і в цьому немає майже нічого поганого, якщо на ващому сайті використовується 3, 5 та нехай навіть 10 плагінів. Але якщо їх там 30+, то це вже досить велике перевантаження системи.
Ми рекомендуємо максимум всього робити через код, тому й хочемо запропонувати вам ознайомитись, як можна з function.php додати кастомний тип запису Новини та Відео в ваш проєкт.
// Custom type
// Добавляем кастомный тип записи
function news_post_type() {
$labels = array(
‘name’ => _x( ‘Новини’, ‘post type general name’, ‘textdomain’ ),
‘singular_name’ => _x( ‘Новина’, ‘post type singular name’, ‘textdomain’ ),
‘menu_name’ => _x( ‘Новини’, ‘admin menu’, ‘textdomain’ ),
‘name_admin_bar’ => _x( ‘Новина’, ‘add new on admin bar’, ‘textdomain’ ),
‘add_new’ => _x( ‘Додати нову’, ‘Новину’, ‘textdomain’ ),
‘add_new_item’ => __( ‘Додати нову Новину’, ‘textdomain’ ),
‘new_item’ => __( ‘Нова Новина’, ‘textdomain’ ),
‘edit_item’ => __( ‘Редагувати новину’, ‘textdomain’ ),
‘view_item’ => __( ‘Переглянути’, ‘textdomain’ ),
‘all_items’ => __( ‘Всі новини’, ‘textdomain’ ),
‘search_items’ => __( ‘Шукати’, ‘textdomain’ ),
‘parent_item_colon’ => __( ‘Батьківська новина:’, ‘textdomain’ ),
‘not_found’ => __( ‘Новини не знайдено.’, ‘textdomain’ ),
‘not_found_in_trash’ => __( ‘Кошик порожній.’, ‘textdomain’ )
);
$args = array(
‘labels’ => $labels,
‘public’ => true,
‘publicly_queryable’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘query_var’ => true,
‘rewrite’ => array( ‘slug’ => ‘news’ ),
‘capability_type’ => ‘post’,
‘has_archive’ => true,
‘hierarchical’ => false,
‘menu_position’ => null,
‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’ )
);
register_post_type( ‘news_type’, $args );
}
add_action( ‘init’, ‘news_post_type’ );
// Регистрация таксономии
function news_taxonomy() {
$labels = array(
‘name’ => _x( ‘Категорії’, ‘taxonomy general name’, ‘textdomain’ ),
‘singular_name’ => _x( ‘Категорії’, ‘taxonomy singular name’, ‘textdomain’ ),
‘search_items’ => __( ‘Пошук категорії’, ‘textdomain’ ),
‘all_items’ => __( ‘Всі категорії’, ‘textdomain’ ),
‘parent_item’ => __( ‘Батьківська категорія’, ‘textdomain’ ),
‘parent_item_colon’ => __( ‘Батьківська категорія:’, ‘textdomain’ ),
‘edit_item’ => __( ‘Редагувати категорію’, ‘textdomain’ ),
‘update_item’ => __( ‘Оновити категорію’, ‘textdomain’ ),
‘add_new_item’ => __( ‘Додати нову’, ‘textdomain’ ),
‘new_item_name’ => __( ‘Нове ім\’я’, ‘textdomain’ ),
‘menu_name’ => __( ‘Категорії’, ‘textdomain’ ),
);
$args = array(
‘hierarchical’ => true, // Определяет, будет ли таксономия иерархической
‘labels’ => $labels,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘query_var’ => true,
‘rewrite’ => array( ‘slug’ => ‘news-category’ ), // Слаг URL
);
// Замените ‘custom_taxonomy’ на желаемое имя таксономии и ‘custom_type’ на ваш кастомный тип записи
register_taxonomy( ‘news_taxonomy’, ‘news_type’, $args );
}
add_action( ‘init’, ‘news_taxonomy’ );