2025-05-26 19:33:14 +03:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
function agro_register_spravochniki_post_type() {
|
2025-09-03 00:13:32 +03:00
|
|
|
|
|
|
|
|
|
|
// Таксономия: рубрики справочников
|
|
|
|
|
|
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,
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
2025-05-26 19:33:14 +03:00
|
|
|
|
register_post_type('spravochniki', [
|
|
|
|
|
|
'labels' => [
|
|
|
|
|
|
'menu_name' => 'Справочники',
|
|
|
|
|
|
'name' => 'Статьи',
|
|
|
|
|
|
'singular_name' => 'Статья',
|
|
|
|
|
|
'add_new' => 'Добавить статью',
|
|
|
|
|
|
'add_new_item' => 'Добавить новую статью',
|
|
|
|
|
|
'edit_item' => 'Редактировать статью',
|
|
|
|
|
|
'new_item' => 'Новая статья',
|
|
|
|
|
|
'view_item' => 'Посмотреть статью',
|
|
|
|
|
|
'search_items' => 'Искать статью',
|
|
|
|
|
|
'not_found' => 'Не найдено',
|
|
|
|
|
|
'not_found_in_trash' => 'В корзине не найдено',
|
|
|
|
|
|
],
|
|
|
|
|
|
'public' => true,
|
2025-09-03 00:13:32 +03:00
|
|
|
|
'has_archive' => 'spravochniki',
|
|
|
|
|
|
'hierarchical' => false, // Для записей обычно false
|
|
|
|
|
|
'rewrite' => [
|
|
|
|
|
|
'slug' => 'spravochniki',
|
|
|
|
|
|
'with_front' => false,
|
|
|
|
|
|
'pages' => true
|
|
|
|
|
|
],
|
2025-05-26 19:33:14 +03:00
|
|
|
|
'supports' => ['title', 'editor', 'excerpt', 'thumbnail'],
|
2025-09-03 00:13:32 +03:00
|
|
|
|
'taxonomies' => ['spravochnik_category'],
|
|
|
|
|
|
'show_in_rest' => true,
|
2025-05-26 19:33:14 +03:00
|
|
|
|
'menu_icon' => 'dashicons-book-alt',
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
2025-09-03 00:13:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
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');
|
2025-05-26 19:33:14 +03:00
|
|
|
|
}
|
2025-09-03 00:13:32 +03:00
|
|
|
|
add_action('init', 'agro_custom_rewrite_rules', 20);
|
2025-05-26 19:33:14 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Подзаголовок
|
|
|
|
|
|
function agro_allow_meta_boxes_in_gutenberg($use_block_editor, $post_type) {
|
|
|
|
|
|
if ($post_type === 'spravochniki') {
|
|
|
|
|
|
return true; // разрешаем Gutenberg
|
|
|
|
|
|
}
|
|
|
|
|
|
return $use_block_editor;
|
|
|
|
|
|
}
|
|
|
|
|
|
add_filter('use_block_editor_for_post_type', 'agro_allow_meta_boxes_in_gutenberg', 10, 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function agro_add_spravochnik_subtitle_meta_box() {
|
|
|
|
|
|
add_meta_box(
|
|
|
|
|
|
'agro_spravochnik_subtitle',
|
|
|
|
|
|
'Подзаголовок',
|
|
|
|
|
|
'agro_spravochnik_subtitle_callback',
|
|
|
|
|
|
'spravochniki',
|
|
|
|
|
|
'side',
|
|
|
|
|
|
'high' // <-- вот здесь!
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
add_action('add_meta_boxes', 'agro_add_spravochnik_subtitle_meta_box');
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-03 00:13:32 +03:00
|
|
|
|
|
2025-05-26 19:33:14 +03:00
|
|
|
|
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%;" />';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function agro_save_spravochnik_subtitle($post_id) {
|
|
|
|
|
|
if (array_key_exists('spravochnik_subtitle', $_POST)) {
|
|
|
|
|
|
update_post_meta($post_id, '_spravochnik_subtitle', sanitize_text_field($_POST['spravochnik_subtitle']));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
add_action('save_post', 'agro_save_spravochnik_subtitle');
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-03 00:13:32 +03:00
|
|
|
|
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'); // Пример порядка
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-05-26 19:33:14 +03:00
|
|
|
|
|
|
|
|
|
|
|