Поддержка Проблемы и решения Как задать custom type post главной страницей?

  • Решено recorder1

    (@recorder1)


    Здравствуйте! Возникла проблема с которой не могу разобраться.
    Нужно задать определенную запись произвольного типа в качестве главной страницы. К примеру имеем custom post type ‘books’ с постами book1, book2 и т.д. Мне нужно на главной отобразить пост book2 так, как будто открыли ее отдельно в single.
    Может быть есть плагин какой? Это было бы проще конечно. Сам ничего не нашел.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    Как-нибудь так: (можно добавить в functions.php темы или оформить в виде плагина)

    function add_books_to_dropdown($pages, $r) {
        if ('page_on_front' == $r['name']) {
            $args = array(
                'post_type' => 'books',
                'posts_per_page' => -1
            );
            $items = get_posts($args);
            $pages = array_merge($pages, $items);
        }
    
        return $pages;
    }
    
    add_filter('get_pages', 'add_books_to_dropdown', 10, 2);
    
    function enable_front_page_books($query) {
        if ('' == $query->query_vars['post_type'] && 0 != $query->query_vars['page_id'])
            $query->query_vars['post_type'] = array('page', 'books');
    }
    
    add_action('pre_get_posts', 'enable_front_page_books');

    Зайти в Настройки чтения и выбрать нужную страницу.

    В списке появилось, и установилось вроде как но нет содержимого. Кстати тема Bra*d*ford. Код темы скинуть не могу в общий доступ, тема платная.

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Возможно, вывод главной переопределен в теме.
    Можно дополнительно попробовать задать принудительный вывод главной через шаблон страницы:

    add_filter('template_include', 'my_callback');
    
    function my_callback($original_template) {
        if (is_front_page() && get_option('show_on_front') == 'page') {
            return get_page_template();
        }
    
        return $original_template;
    }

    Так тоже не работает.

    Помогло только перепиливание темы и создание отдельного шаблона для главной.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Как задать custom type post главной страницей?» закрыта для новых ответов.