Как изменить страницу настраиваемого типа записи в зависимости от таксономии

Во-первых, я извиняюсь, если что-то из этого выходит как глупо, это мой первый сайт wordpress.

Мне нужна была возможность для пользователя создавать «проекты» через панель мониторинга. Список всех «проектов» (очень похож на блог) будет показан на странице «проекты» этого веб-сайта.

Я сделал пользовательский тип записи, добавив следующий код в функции.php моей детской темы:

function project_init() {

$labels = array(
'name' => _x( 'Projects','post type general name'),
'singular_name' => _x( 'Project', 'post type singular name'),
'all_items' => __('All Projects'),
'add_new' => _x('Add New Project', 'Projects'),
'add_new_item' => __('Add New Project'),
'edit_item' => __('Edit Project'),
'new_item' => __('New Project'),
'view_item' => __('View Project'),
'search_items' => __('Search in Projects'),
'not_found' =>  __('No Projects found'),
'not_found_in_trash' => __('No Projects found in trash'),
'parent_item_colon' => ''
);



$args = array(
'label' => 'projects',
  'labels' => $labels,
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'has_archive' => true,
    'hierarchical' => false,
    'rewrite' => array('slug' => 'projects'),
    'query_var' => true,
    'menu_icon' => 'dashicons-hammer',
    'taxonomies' => array( 'category' ),
    'supports' => array(
        'title',
        'editor',
        'excerpt',
        'trackbacks',
        'custom-fields',
        'comments',
        'revisions',
        'thumbnail',
        'author',
        'page-attributes',)
    );
register_post_type( 'projects', $args );
}
add_action( 'init', 'project_init', 0 );

Пока CPT работает нормально, и все тестовые проекты, которые я делаю, появляются на странице проектов.

проблема:

Теперь я хочу, чтобы было 2 разных страницы. Одна страница для «текущих проектов», и другая страница для «завершенных проектов».

«Текущие проекты» будут перечислены на странице «проекты»…….но когда пользователь изменяет что-то в текущем проекте, например категорию, или тег, или что-то (я не уверен, каким должен быть механизм), и они изменяют его с «текущего проекта» на «завершенный проект», этот элемент проекта будет удален с его текущей страницы и отображен на странице «завершенные проекты».

Как мне лучше всего это сделать? Я уже пытался добавить категории «завершено» и «текущий» в различные проекты, а затем попытался связать это с пунктом меню или страницей, но не смог заставить его работать.

Я очень ценю любую помощь или совет любой может дать! Спасибо!

1 ответ

  1. Это то, что я имею в виду:

    Кулак создать файл шаблона. I prefix all my templates with the word template: ie: template_projects_completed.phpчтобы обозначить это как шаблон, вам нужен фрагмент текста комментария в верхней части файла, чтобы WordPress знал свой шаблон:

    <?php
    /* Template Name: Projects Template  */
    ?>
    

    Затем создайте новую страницу в панели мониторинга WordPress и выберите шаблон в раскрывающемся списке шаблон в качестве шаблона для использования.

    Затем в только что созданный php файл поместите это в него.

    <?php
    //help code
    $posts = new WP_Query( array(
        'post_type' => 'projects', // your custom post type
        'category_name'=>'your_category', // Whatever you call your category ie. completed
        'posts_per_page' => 10,
        'orderby' => 'date', // Purely optional - just for some ordering
        'order' => 'DESC' // Ditto
    ) );
    
     if ($posts -> have_posts()) : while ($posts->have_posts()) : $posts->the_post(); ?>
         <ul>
             <li><?php the_content(); ?></li>
             <!-- all the other pieces you want.. ie the_author() the_title() ect.. ect..-->
         </ul>
    
    <?php endwhile; endif; ?>
    

    Вы, конечно, должны включать свой верхний и Нижний колонтитулы в соответствующих местах:
    get_header () и get_footer()