13

Березень, 2024

Як додати кастомний тип запису WordPress без коду (та використовуючи код)

Сьогодні виходить черговий урок по роботі з системою 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’ );

Поділитись