Как “сгруппировать” страницы вместе?

Вопрос или проблема

У меня много Страниц, которые могут быть (должны быть) сгруппированы под несколько различных Категорий. ** Затем более важным является то, что мне нужно управлять этими страницами (разных групп) программно через functions.php.

Допустим, у меня есть:

  • Страница A (Категория: Фрукты)
  • Страница B (Категория: Транспортные средства)
  • Страница C (Категория: Транспортные средства)
  • Страница D (Категория: Фрукты)
  • Страница E (Категория: Технологии)

Затем в functions.php будет некоторая логика, например:

  • Если Страница находится в категории Фрукты, тогда echo "Это связано с фруктами.";.
  • Если Страница находится в категории Транспортные средства, тогда echo "Это связано с транспортными средствами.";.
  • Если Страница находится в категории Технологии, тогда echo "Это связано с технологиями.";.

Я не знаю, связано ли это с Таксономией или Тегированием или Пользовательскими Полями или чем-то еще. Но:

  • Каков идеальный способ сделать это, пожалуйста? (Особенно, чтобы иметь возможность управлять через код в бэкенде.)

И еще раз, пожалуйста, позвольте мне повторить, “Страницы”. (Не о Записях или чем-то другом)

Вы можете использовать категории со страницами, зарегистрировав таксономию категории для типа объекта страницы:

function categories_for_pages(){
    register_taxonomy_for_object_type( 'category', 'page' );
}
add_action( 'init', 'categories_for_pages' );

Если вы хотите использовать отдельную таксономию для этого, вы можете зарегистрировать свою собственную таксономию для страниц.

  1. Первое, что вам нужно сделать, это включить категории для страниц, достаточно просто:

    function enable_categories_for_pages() {
        register_taxonomy_for_object_type('category', 'page');  
    }
    add_action( 'init', 'enable_categories_for_pages' );
    

Обратите внимание, что в WordPress категории общие для различных типов записей

  1. Для предварительной регистрации категорий:
    $wp_insert_category(array(
        'cat_name' => 'Фрукт',
        'category_description' => 'Мои посты о фруктах',
        'category_nicename' => 'Фрукт'
    ));
    
  2. Вы можете программно добавлять категории к записям:
    wp_set_post_categories($post->ID, get_cat_ID( 'Фрукт' ));
    
  3. При отображении страницы (называемой в WordPress $post):
    if ($post->post_type == 'page'){
        if (has_category( 'Фрукты', $post)){
            echo "Это связано с фруктами.";
        }
    }
    

Ответ или решение

Для группировки страниц в WordPress и управления этими группами через файл functions.php, вы можете использовать таксономии. В вашем случае это могут быть стандартные категории или же пользовательские таксономии, созданные специально для страниц. Ниже представлен полный процесс, который вы можете использовать для достижения этой цели.

Шаг 1: Включение категорий для страниц

Нужно активировать поддержку категорий для типа контента «страницы». Вы можете сделать это, добавив следующий код в файл functions.php вашей темы:

function enable_categories_for_pages() {
    register_taxonomy_for_object_type('category', 'page');  
}
add_action('init', 'enable_categories_for_pages');

Шаг 2: Регистрация категорий

Вы можете заранее зарегистрировать категории, которые будут использоваться для ваших страниц. Это можно сделать следующим образом:

function create_custom_categories() {
    if (!term_exists('Fruits', 'category')) {
        wp_insert_term(
            'Fruits', // Название категории
            'category', // Таксономия
            array(
                'description' => 'Страницы, связанные с фруктами',
                'slug' => 'fruits'
            )
        );
    }
    // Добавьте аналогичные блоки для других категорий, если необходимо.
}
add_action('init', 'create_custom_categories');

Шаг 3: Программное добавление категорий к страницам

Вы можете автоматически добавлять категории к страницам с помощью следующего кода:

function set_category_for_page($post_id) {
    // Убедитесь, что это страница
    if (get_post_type($post_id) == 'page') {
        wp_set_post_categories($post_id, array(get_cat_ID('Fruits')));
    }
}
// Вызывайте эту функцию при создании или обновлении страницы
add_action('save_post', 'set_category_for_page');

Шаг 4: Вывод информации в зависимости от категории

Когда вы выводите содержимое страницы, вы можете добавить логику, которая будет проверять категорию и выводить соответствующее сообщение:

function display_category_message() {
    if (is_page()) {
        global $post;
        if (has_category('Fruits', $post)) {
            echo "Это связано с фруктами.";
        } elseif (has_category('Vehicles', $post)) {
            echo "Это связано с транспортными средствами.";
        } elseif (has_category('Technology', $post)) {
            echo "Это связано с технологиями.";
        }
    }
}
add_action('wp_head', 'display_category_message');

Заключение

Таким образом, вам удалось создать систему группировки страниц при помощи категорий в WordPress. Вы можете управлять категориями и выводом информации о странице через functions.php, что обеспечивает гибкость и контроль в рамках вашего проекта. Не забудьте протестировать новый функционал в безопасной среде, прежде чем вносить изменения на вашем живом сайте.

Оцените материал
Добавить комментарий

Капча загружается...