IvanRu08

Помогите разобраться с кастомными записями WP

    7 сообщений в этой теме

    Ребят, выручайте. Есть wp тема, на которой есть статическая главная (main.php), блог (адрес сайта/blog). К этому всему нужно добавить портфолио. Создаю отдельную страницу по аналогии с блогом, делаю кастомный шаблон и в свойствах к странице указываю этот самый шаблон. Пока все хорошо. Теперь мне нужно, чтобы на этой странице отображались превью работ (как анонсы постов), а при клике открывалась полная запись с уникальной структурой.

    Создаю кастомный тип записей:

    add_action('init', 'my_portfolio');
    function my_portfolio()
    {
      $labels = array(
            'name' => 'Портфолио', 
            'singular_name' => 'Портфолио',
            'add_new' => 'Добавить новую',
            'add_new_item' => 'Добавить новую работу',
            'edit_item' => 'Редактировать работу',
            'new_item' => 'Новая работа',
            'view_item' => 'Посмотреть работу',
            'search_items' => 'Найти работу',
            'not_found' =>  'Работ не найдено',
            'not_found_in_trash' => 'В корзине работ не найдено',
            'parent_item_colon' => '',
            'menu_name' => 'Портфолио'
    
      );
      $args = array(
            'labels' => $labels,
            'public' => true,
            'publicly_queryable' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'query_var' => true,
            'rewrite' => true,
            'capability_type' => 'post',
            'has_archive' => true,
            'hierarchical' => false,
            'menu_position' => 1,
            'supports' => array('title','editor','author','thumbnail','excerpt','comments')
      );
      register_post_type('portfolio',$args);
    }

    Все создается, отображается в админке. Создаю новую запись в разделе портфолио. Вот код файла portfolio.php, в котором должны отображаться превью портфолио:

                  <div class="container-fluid">
                            <div class="row-fluid">
                                    <div class="col-md-12">
                                            <?php 
                                                    $current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; // определяем текущую страницу блога
                                                    $args = array(
            'posts_per_page' => get_option('posts_per_page'), // значение по умолчанию берётся из настроек, но вы можете использовать и собственное
            'paged'          => $current_page // текущая страница
            );
                                                    query_posts( $args );
    
                                                    $wp_query->is_archive = true;
                                                    $wp_query->is_home = false;
    
                                                    while(have_posts()): the_post();
                                                    ?>
                                                    <h2><?php the_title() /* заголовок */ ?></h2>
                                                    <p><?php the_content() /* содержимое поста */ ?></p>
                                                    <?php
                                                    endwhile;
                                                    ?>
                                            </div>
                                    </div>
                            </div>

    Потом создаю файл single-portfolio, где по логике должна открываться полная запись. В итоге ничего не работает. Шаблоны не подключаются, вместо этого на странице портфолио выводится какой то архив с соотвествующим названием. Не знаю, что делать. Голова уже кипит.

    Люди добрые, помогите пожалуйста. Хочу реализовать примерно как здесь: https://truemisha.ru/ . То есть на этом сайте есть и блог, и портфолио, то есть по сути разные блоги, с разной структурой полной записи. Заранее спасибо за любой совет!

    PS Читал как это сделать, не получилось(((((((((((

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Если я правильно понял вы:

    1) Создали шаблон для списка работ и указали его название

    2) Создали страницу и указали для неё этот шаблон.

    Дальше посмотрите эту статью, вы в $args не указали номер категории, из которой выбирать.

    У вас скорее всего старый источник query_posts() не рекомендован к использованию.))

    1 пользователю понравилось это

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    14 часа назад, jdk сказал:

    Если я правильно понял вы:

    1) Создали шаблон для списка работ и указали его название

    2) Создали страницу и указали для неё этот шаблон.

    Дальше посмотрите эту статью, вы в $args не указали номер категории, из которой выбирать.

    У вас скорее всего старый источник query_posts() не рекомендован к использованию.))

    Спасибо за ответ! Все правильно, я почти разобрался. Теперь есть страница где выводятся записи созданного типа. Потом я создаю файл single-portfolio.php. Я правильно понимаю, что имено этот файл будет отвечать за вывод полной записи? Вот код:

    <?php get_template_part( 'header', 'small' ); ?>
    
            <main class="index">
                    <div class="portfolio_width">
                            <div class="container-fluid">
                                    <div class="row">
                                            <div class="col-lg-12">
                                                    <?php 
                                                    while ( have_posts() ) : the_post(); ?>
    
                                                            <article>
                                                                    <?php 
                                                                            the_title( '<h1>', '</h1>' );
                                                                            the_content();
                                                                    ?>
                                                            </article>
    
                                                    <?php
                                                    endwhile;
                                                    ?>
                                            </div>
                                    </div>
                            </div>
                    </div>
            </main>
            
    <?php get_template_part( 'footer', 'small' ) ?>

    Однако при попытке перейти на запись по ссылке мене перебрасывает на главную страницу. В чем может быть проблема?

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Так, с ссылками разобрался. Остался еще один вопрос, решил задать его здесь. У меня зарегистрирова кастомный тип записей с название portoflio. Так же у меня есть страница с адресом: адрес-сайта.ru/portoflio. То есть по задумке полная запись открывается по адресу адрес-сайта.ru/portoflio/адрес ссылки.

    Однако, когда название кастомного типа записи совпадает со слагом страницы, то почему то не подцепляется шаблон page-portoflio, а вместо него подцепляется archive.php. Если поменять название кастомного типа записи, то все начинает работать. Но выглядит не очень красиво. Например, страница находится по адресу адрес-сайта.ru/portoflio, а вот сама запись уже открывается по адресу адрес-сайта.ru/my_portoflio/адрес ссылки.

    Почему так происходит и как это можно исправить?

    То есть мне нужно примерно как здесь: http://truemisha.ru/blog

    Изменено пользователем IvanRu08

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Здравствуйте. Не разобрались ещё? а то форум лежал.

    1 пользователю понравилось это

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    4 часа назад, jdk сказал:

    Здравствуйте. Не разобрались ещё? а то форум лежал.

    Здравствуйте, уже разобрался. Оказывается при регистрации кастомного типа записи нужно лишь было прописать слаг portfolio, а сам тип назвать по другому. Теперь все работает, спасибо!

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Ещё есть плагин, позволяющий кастомные записи создавать из админки. Тут хороший мануал.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!


    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.


    Войти сейчас