Exercise 1: register_post_type() for a Minimal "Testimonial" Post Type — Possible Solution ==================================================================== THE CODE ------------------------------ array( 'name' => 'Testimonials', 'singular_name' => 'Testimonial', ), 'public' => true, 'has_archive' => false, 'supports' => array( 'title', 'editor' ), ) ); } add_action( 'init', 'register_testimonial_post_type' ); ?> WHY 'testimonial' AS THE FIRST ARGUMENT ------------------------------ Per this chapter's own example, the first argument to register_post_type() is the post type's own internal identifier - the value that will actually be stored in the post_type column for every testimonial. This should be a short, machine-readable slug, matching the pattern of 'portfolio' in this chapter's own worked example. WHY labels ARE INCLUDED ------------------------------ Per this chapter's own example, the labels array (with 'name' and 'singular_name') controls how the post type is displayed in the WordPress dashboard - without it, the admin menu would show a generic or missing label instead of "Testimonials." WHY has_archive IS SET TO false ------------------------------ The exercise specifically asks for "no automatic archive page." Per this chapter, has_archive controls "whether an automatic archive listing page exists for it" - setting this explicitly to false ensures no automatic archive listing is created for testimonials, matching the stated requirement directly (this chapter's own portfolio example used true specifically because it wanted an archive; this exercise deliberately asks for the opposite). WHY supports INCLUDES ONLY 'title' AND 'editor' ------------------------------ The exercise specifically asks for a post type that "supports only a title and the main editor." Per this chapter, the supports array "controls which built-in editor features this post type gets" - listing only 'title' and 'editor' (and omitting things like 'thumbnail', which this chapter's own portfolio example included) means the testimonial editing screen will show only a title field and the main content editor, with no featured-image support or other extra fields. WHY public IS STILL true ------------------------------ Even with no archive page, testimonials still need to be individually viewable and queryable on the front end (each testimonial still gets its own single-testimonial.php-style page per the template hierarchy) - setting public to true keeps that individual visibility, while has_archive: false specifically removes only the automatic LISTING page, not the individual testimonial pages themselves. WHY THIS WORKS AS AN ANSWER ------------------------------ It supplies correct, complete code following this chapter's own register_post_type() pattern, and explains each argument's specific value by directly tying it back to the exercise's own stated requirements and this chapter's own explanation of what each argument controls.