update to ver 3-09-25

This commit is contained in:
argoexpert press
2025-09-03 00:13:32 +03:00
parent 60037c5091
commit f99899e53e
12 changed files with 236 additions and 108 deletions

View File

@@ -1,6 +1,33 @@
<?php
function agro_register_spravochniki_post_type() {
// Таксономия: рубрики справочников
register_taxonomy('spravochnik_category', 'spravochniki', [
'labels' => [
'name' => 'Категории справочников',
'singular_name' => 'Категория справочника',
'search_items' => 'Искать категории',
'all_items' => 'Все категории',
'parent_item' => 'Родительская категория',
'parent_item_colon' => 'Родительская категория:',
'edit_item' => 'Редактировать категорию',
'update_item' => 'Обновить категорию',
'add_new_item' => 'Добавить новую категорию',
'new_item_name' => 'Новое имя категории',
'menu_name' => 'Категории',
],
'public' => true,
'hierarchical' => true,
'rewrite' => [
'slug' => 'spravochniki/category',
'with_front' => false,
'hierarchical' => true
],
'show_admin_column' => true,
'show_in_rest' => true,
]);
register_post_type('spravochniki', [
'labels' => [
'menu_name' => 'Справочники',
@@ -16,38 +43,48 @@ function agro_register_spravochniki_post_type() {
'not_found_in_trash' => 'В корзине не найдено',
],
'public' => true,
'has_archive' => false,
'rewrite' => true, // переопределим вручную
'hierarchical' => false,
'has_archive' => 'spravochniki',
'hierarchical' => false, // Для записей обычно false
'rewrite' => [
'slug' => 'spravochniki',
'with_front' => false,
'pages' => true
],
'supports' => ['title', 'editor', 'excerpt', 'thumbnail'],
'taxonomies' => ['spravochnik_category'], // прикрепим свою таксономию
'show_in_rest' => true, // поддержка Gutenberg
'taxonomies' => ['spravochnik_category'],
'show_in_rest' => true,
'menu_icon' => 'dashicons-book-alt',
]);
// Таксономия: рубрики справочников
register_taxonomy('spravochnik_category', 'spravochniki', [
'labels' => [
'name' => 'Справочники',
'singular_name' => 'Справочник',
'search_items' => 'Искать справочник',
'all_items' => 'Все справочники',
'parent_item' => 'Родительская рубрика',
'parent_item_colon' => 'Родительская рубрика:',
'edit_item' => 'Редактировать справочник',
'update_item' => 'Обновить справочник',
'add_new_item' => 'Добавить новый справочник',
'new_item_name' => 'Новое имя справочника',
'menu_name' => 'Справочники',
],
'public' => true,
'hierarchical' => true,
'rewrite' => false, // переопределим вручную
'show_in_rest' => true,
]);
}
}
add_action('init', 'agro_register_spravochniki_post_type', 0); // Приоритет 0 для ранней регистрации
// 3. Правила перезаписи (упрощенные)
function agro_custom_rewrite_rules() {
// Главная страница справочников
add_rewrite_rule('^spravochniki/?$', 'index.php?post_type=spravochniki', 'top');
// Пагинация архива
add_rewrite_rule('^spravochniki/page/([0-9]+)/?$', 'index.php?post_type=spravochniki&paged=$matches[1]', 'top');
// Одиночные записи
add_rewrite_rule('^spravochniki/([^/]+)/?$', 'index.php?spravochniki=$matches[1]', 'top');
// Категории 1 уровня
add_rewrite_rule('^spravochniki/category/([^/]+)/?$', 'index.php?spravochnik_category=$matches[1]', 'top');
// Категории 2 уровня (иерархические)
add_rewrite_rule('^spravochniki/category/([^/]+)/([^/]+)/?$', 'index.php?spravochnik_category=$matches[2]', 'top');
}
add_action('init', 'agro_custom_rewrite_rules', 20);
add_action('init', 'agro_register_spravochniki_post_type');
// Подзаголовок
@@ -73,6 +110,7 @@ function agro_add_spravochnik_subtitle_meta_box() {
add_action('add_meta_boxes', 'agro_add_spravochnik_subtitle_meta_box');
function agro_spravochnik_subtitle_callback($post) {
$subtitle = get_post_meta($post->ID, '_spravochnik_subtitle', true);
echo '<input type="text" name="spravochnik_subtitle" value="' . esc_attr($subtitle) . '" style="width:100%;" />';
@@ -86,5 +124,16 @@ function agro_save_spravochnik_subtitle($post_id) {
add_action('save_post', 'agro_save_spravochnik_subtitle');
add_action('pre_get_posts', 'modify_taxonomy_query');
function modify_taxonomy_query($query) {
// Только для главного запроса таксономии
if (!is_admin() && $query->is_main_query() && is_tax('spravochnik_category')) {
$query->set('posts_per_page', 9); // Ваш лимит
$query->set('orderby', 'title'); // Пример сортировки
$query->set('order', 'ASC'); // Пример порядка
}
}