Custom post types category

You have serious issues with your naming conventions, structure of your functions, invalid usage of reserved names and wrong values passed to parameters

First, naming coventions. Function names should be lowercase letters, should not start with a letter and words should be divided by underscores (_). The same goes for custom post type and taxonomy names. Drop your capital letters. The same goes for rewrite rules

Secondly, don’t create multiple instances that should be hooked to the same function. Properly group your code together in one function, and add that one function to your intended hook, in this case init

Thirdly, don’t use reserved names, even to rewrite slugs. It is confusing and might conflict later with the template hierarchy. In your case, you’ve use category, which is a reserved name.

Lastly, have a look at the codex for the correct values that should be passed to a particular parameter. cat excepts only category ID’s, not slugs or name. BTW, you are making use of a custom taxonomy, so you should use the tax_query parameter and not the category parameters.

For reference

EDIT

One thing I forgot to add, wp_reset_query is suppose to be used with query_posts, which you should never use. Whenever using WP_Query and get_posts, you need to reset your custom query with wp_reset_postdata

EDIT 2

You’ve missed a couple of points here that I spoke about. What is confusing is that you’ve changed a few things you’ve should have. Before I post code just a few extra things

  • When you create a custom taxonomy, and you need to it to function like build-in categories, you need to set hierarchical to true. When you set it to false, your custom taxonomy behave like build-in post tags

  • Whenever you create a “category” in a custom taxonomy, it is known as a term.

  • Your taxonomy is called project, yet you pass Initiatieffase (which I think might be a term of the taxonomy project to the taxonomy parameter.

  • When you set field in your tax_query to slug, you have to use the slug of your term in the terms parameter, not the name of the term.

  • Your custom post type is called project_post_type but you pass project (which is your taxonomy name) to the post_type parameter in your custom query

This is how your code should look like

<?php
// Register Custom Post Type
function create_cpt_and_ct() {

    $labels1 = array(
        'name'                => _x( 'Projects', 'Post Type General Name', 'text_domain' ),
        'singular_name'       => _x( 'Project', 'Post Type Singular Name', 'text_domain' ),
        'menu_name'           => __( 'Project', 'text_domain' ),
        'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
        'all_items'           => __( 'All Items', 'text_domain' ),
        'view_item'           => __( 'View Item', 'text_domain' ),
        'add_new_item'        => __( 'Add New Item', 'text_domain' ),
        'add_new'             => __( 'Add New', 'text_domain' ),
        'edit_item'           => __( 'Edit Item', 'text_domain' ),
        'update_item'         => __( 'Update Item', 'text_domain' ),
        'search_items'        => __( 'Search Item', 'text_domain' ),
        'not_found'           => __( 'Not found', 'text_domain' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
    );
    $args1 = array(
        'label'               => __( 'project_post_type', 'text_domain' ),
        'description'         => __( 'Project Description', 'text_domain' ),
        'labels'              => $labels1,
        'supports'            => array( 'title', 'editor', 'thumbnail', ),
        'taxonomies'          => array( 'project' ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_icon'           => get_template_directory_uri() . '/img/project-icon.png',
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
    );
    register_post_type( 'project_post_type', $args1 );

    $labels2 = array(
        'name'                       => _x( 'Projects', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Project', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Project', 'text_domain' ),
        'all_items'                  => __( 'All Items', 'text_domain' ),
        'parent_item'                => __( 'Parent Item', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
        'new_item_name'              => __( 'New Item Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Item', 'text_domain' ),
        'edit_item'                  => __( 'Edit Item', 'text_domain' ),
        'update_item'                => __( 'Update Item', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
        'search_items'               => __( 'Search Items', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove items', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used items', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
    );
    $args2 = array(
        'labels'                     => $labels2,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'project', 'project_post_type', $args2 );

}

// Hook into the 'init' action
add_action( 'init', 'create_cpt_and_ct', 0 );


function theme_prefix_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );

And for your tax_query

<?php
$args = array(
    'post_type' => 'project_post_type',
    'tax_query' => array(
        array(
            'taxonomy' => 'project',
            'field' => 'slug',
            'terms' => 'Initiatieffase' //THIS MUST BE YOUR TERM SLUG, NOT NAME
        )
    )
);
$query = new WP_Query( $args );
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); 
?>
    <li>
        <a href="https://wordpress.stackexchange.com/questions/158121/<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
    </li>
<?php 
endwhile; 

wp_reset_postdata();
?>

ADDITIONAL READING

Debugging in WordPress

EDIT 3

For proper naming and the correct use of templates, go and check the Template Hierarchy in the codex. This should help you out a lot in future

Your single page would be single-{$post_type}.php which translates to single-project_post_type.php. Same goes for your archive page.

As for your custom taxonomy page, you can use taxonomy-$taxonomy.php which translates to taxonomy-project.php