{"id":65533,"date":"2025-05-02T07:00:00","date_gmt":"2025-05-02T14:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=65533"},"modified":"2025-05-26T11:24:57","modified_gmt":"2025-05-26T18:24:57","slug":"custom-post-types","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/","title":{"rendered":"Decoding WordPress: Your Complete Guide to Custom Post Types"},"content":{"rendered":"\n<p>Your website is coming on strong, <em>amigo<\/em>.<\/p>\n\n\n\n<p>Your homepage is a showstopper. Your blog is filling up fast. And now you\u2019re adding even more \u2014 perhaps a portfolio or a section stacked with testimonials.<\/p>\n\n\n\n<p>The only problem is, you\u2019re not sure how to keep it all properly organized.<\/p>\n\n\n\n<p>You know WordPress can handle different post types. But, uhhhh\u2026how do you actually<em> access <\/em>that feature?<\/p>\n\n\n\n<p>Don\u2019t worry, you\u2019re not alone. Custom post types are essentially like unicorns \u2014 everyone\u2019s heard of them, but very few people have seen them in person.&nbsp;<\/p>\n\n\n\n<p>To help you learn more about these mythical beasts, we\u2019ve made a guide. A really good, comprehensive guide that anyone can follow. And you&#8217;re reading it now.<\/p>\n\n\n\n<p>Give us 10 minutes of your time, and we&#8217;ll introduce you to the world of custom post types (CPTs).<\/p>\n\n\n\n<p>Let&#8217;s get started!<\/p>\n\n\n\n<h2 id=\"h-what-are-custom-post-types-and-why-should-you-care\" class=\"wp-block-heading\">What Are Custom Post Types (and Why Should You Care)?<\/h2>\n\n\n\n<p>As you&#8217;re probably aware, WordPress was originally designed as a <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-start-a-blog\/\">blogging<\/a> platform. And it still plays that role really well.<\/p>\n\n\n\n<p>Of course, WordPress can do much more nowadays. Many <a href=\"https:\/\/www.dreamhost.com\/features\/wordpress-staging\/\">WordPress-powered sites<\/a> don&#8217;t even have a blog, but underneath the hood, that original blog-based skeleton is still there.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1500\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content.webp\" alt=\"WordPress customization interface showing a floral shop site called &quot;Every Petal&quot; with spring floral arrangement photography and content editing options.\" class=\"wp-image-65871 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-300x281.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-1024x960.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-768x720.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-1536x1440.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-600x563.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-1200x1125.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-730x684.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-1460x1369.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-784x735.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-1568x1470.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/01_beyond_default_wordpress_content-877x822.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1500;\" \/><\/figure>\n\n\n\n<p>This means that whenever you publish content, it&#8217;s usually packaged in one of these default post types:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Posts:<\/strong> <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-write-blog-posts\/\">Blog posts<\/a>, that is<\/li>\n\n\n\n<li><strong>Pages:<\/strong> Every page that isn&#8217;t a standard post<\/li>\n\n\n\n<li><strong>Attachments: <\/strong>Media uploads, like photos and audio snippets<\/li>\n\n\n\n<li><strong>Revisions: <\/strong>When you edit an existing post, the changes are stored here<\/li>\n\n\n\n<li><strong>Nav Menu: <\/strong>Every <a href=\"https:\/\/www.dreamhost.com\/blog\/navigation-menu-design\/\">menu<\/a> on your site is stored in one of these<\/li>\n<\/ul>\n\n\n\n<p>Sticking with these default options is just fine if you have a simple website, but what about if you want to run a store or <a href=\"https:\/\/www.dreamhost.com\/blog\/photography-portfolio-website-design\/\">create a visual portfolio<\/a>?<\/p>\n\n\n\n<p>You <em>could<\/em> jam your content into a post or a page, but how do you separate real blog posts from the other stuff?&nbsp;<\/p>\n\n\n\n<p>Some site owners try to MacGyver the situation, using categories and tags to organize their content. The problem is, you end up with an organizational headache.<\/p>\n\n\n\n<p>This is where custom post types come in useful. Basically, you can tell WordPress exactly what type of content you want to publish and how that content should be displayed.&nbsp;<\/p>\n\n\n\n<p>There are multiple benefits.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Improved user experience:<\/strong> By structuring content logically, CPTs help visitors navigate your site more efficiently, leading to better engagement.<\/li>\n\n\n\n<li><strong>Enhanced SEO: <\/strong>CPTs can have their own taxonomies, metadata, and <a href=\"https:\/\/www.dreamhost.com\/blog\/guide-to-wp-permalinks\/\">URL structures<\/a>. In plain English, that means search engines can understand and index your content more effectively.<\/li>\n\n\n\n<li><strong>Better scalability and flexibility:<\/strong> Creating a clear structure for your content means you&#8217;re less likely to encounter issues as your site grows.<\/li>\n\n\n\n<li><strong>A bespoke admin environment:<\/strong> Your WordPress dashboard can be tailored with <a href=\"https:\/\/www.dreamhost.com\/blog\/tutorial-wp-menu-setup\/\">custom menu items<\/a> and fields, so you can add new posts and make updates faster.<\/li>\n\n\n\n<li><strong>Better integration with plugins: <\/strong>Many <a href=\"https:\/\/www.dreamhost.com\/blog\/intro-to-wordpress-plugins\/\">WordPress plugins<\/a>, such as <a href=\"https:\/\/www.dreamhost.com\/blog\/guide-to-wp-custom-fields\/\">custom fields<\/a> tools and <a href=\"https:\/\/wpspectra.com\/pricing\/?bsf=10463\">page builders<\/a>, are specifically designed to work with CPTs. Again, this opens up more options for customizing your admin environment.<\/li>\n\n\n\n<li><strong>Consistent content display:<\/strong> Create a uniform look and feel for your new content types by creating custom templates.<\/li>\n<\/ul>\n\n\n\n<p>To summarize: custom post types rock.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do Custom Post Types Affect SEO and Performance?<\/h3>\n\n\n\n<p>You may hear some people say that custom post types will ruin your site performance and mess up <a href=\"https:\/\/www.dreamhost.com\/blog\/seo-strategy\/\">your SEO<\/a>.<\/p>\n\n\n\n<p>That <em>can<\/em> happen, but that&#8217;s almost always the result of bad code.<\/p>\n\n\n\n<p>If you set up your CPTs properly, you shouldn&#8217;t see any issues. In fact, creating a better structure might improve the search performance of your WordPress website.<\/p>\n\n\n\n<h2 id=\"h2_4-telltale-signs-that-your-website-needs-custom-post-types\" class=\"wp-block-heading\">4 Telltale Signs That Your Website Needs Custom Post Types<\/h2>\n\n\n\n<p>Okay, that&#8217;s the sales pitch done. Now, do you actually need this feature? There&#8217;s no point in reading <em>a whole guide<\/em> unless your site will benefit.<\/p>\n\n\n\n<p>With that in mind, here are the main telltale signs that CPTs are worth exploring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Your Site Has Multiple Types of Content<\/h3>\n\n\n\n<p>Content comes in many flavors. If your website features more than one, you might want to explore custom post types.<\/p>\n\n\n\n<p>Some examples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A photography portfolio with image galleries and detailed descriptions<\/li>\n\n\n\n<li>Event listings that have date, time, and location fields<\/li>\n\n\n\n<li>Client testimonials that are structured differently from your blog posts<\/li>\n<\/ul>\n\n\n\n<p>Any content that doesn&#8217;t neatly fit either the post or page format is prime CPT material.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Content Management Feels Like a Total Mess<\/h3>\n\n\n\n<p>Does your WordPress admin area feel like an untamed jungle? For example, are you:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Using categories or tags to differentiate unrelated content types? (E.g., mixing blog posts and portfolio items)<\/li>\n\n\n\n<li>Relying heavily on page builders or <a href=\"https:\/\/www.dreamhost.com\/blog\/wordpress-shortcodes-101\/\">shortcodes<\/a> to create unique layouts for different types of content?<\/li>\n\n\n\n<li>Having difficulty filtering or sorting content?<\/li>\n<\/ul>\n\n\n\n<p>These are all symptoms of a site that&#8217;s crying out for custom post types!<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h3 class=\"wp-block-heading\">3. Some Content Types Don&#8217;t Display Properly on Your Site<\/h3>\n\n\n\n<p>Maybe your site only has one type of content\u2026but these posts just don&#8217;t<em> look<\/em> right.&nbsp;<\/p>\n\n\n\n<p>A common example would be <a href=\"https:\/\/www.dreamhost.com\/blog\/product-landing-page-design\/\">product pages<\/a> that look like blog posts. No one with an ounce of discernment is buying from that online store.<\/p>\n\n\n\n<p>The solution involves custom post types. You can assign each new post type a unique template that is perfectly tailored to your content.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. You Need Features That Posts and Pages Don&#8217;t Have<\/h3>\n\n\n\n<p>Posts and pages can handle text, links, images, embedded media\u2026and that&#8217;s about it.&nbsp;<\/p>\n\n\n\n<p>If you need something more, you should probably set up some CPTs.<\/p>\n\n\n\n<p>Some real-world examples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Event pages that need date pickers, RSVP options, and countdown timers<\/li>\n\n\n\n<li>Real estate listings with price fields, location maps, and property details<\/li>\n\n\n\n<li>Job boards that have application forms and submission tracking<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h2_how-to-create-custom-post-types\" class=\"wp-block-heading\">How To Create Custom Post Types<\/h2>\n\n\n\n<p>Hmm, seems like you could use some CPTs. Shall we create some?<\/p>\n\n\n\n<p>There are several ways to register custom post types in WordPress.&nbsp;<\/p>\n\n\n\n<p>The simple route calls for no technical knowledge. If you&#8217;re comfortable working with PHP snippets, the middle road offers more customization options. For coders, the fully hands-on method provides complete control.<\/p>\n\n\n\n<p>Let&#8217;s work through them now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. The Easy Plugin Method (Beginner-Friendly)<\/h3>\n\n\n\n<p>Not a WordPress expert? We get you. Whether you&#8217;re new to the platform or new to running a website, the whole thing can seem overwhelming.<\/p>\n\n\n\n<p>Not to worry. Tools like<a href=\"https:\/\/en-gb.wordpress.org\/plugins\/custom-post-type-ui\/\"> Custom Post Type UI<\/a> plugin make it simple to install CPTs.1.<strong> Install the plugin: <\/strong>In your WordPress admin area, visit <strong>Plugins <\/strong>&gt;<strong> Add New Plugin<\/strong>, and search for &#8220;Custom Post Type UI.&#8221; Click <strong>Install Now<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1014\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install.webp\" alt=\"WordPress admin panel showing the Add Plugins page with search results for &quot;custom post type ui&quot; plugin with installation option and high user rating.\" class=\"wp-image-65872 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-300x190.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-1024x649.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-768x487.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-1536x973.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-600x380.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-1200x761.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-730x463.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-1460x925.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-784x497.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-1568x994.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/02_custom_post_type_ui_install-877x556.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1014;\" \/><\/figure>\n\n\n\n<p>Once installed, the button will change to \u201cActivate.\u201d Click it.<\/p>\n\n\n\n<p>2. <strong>Open the plugin settings: <\/strong>Via the sidebar menu, head to <strong>CPT UI<\/strong> &gt;<strong> Add\/Edit Post Types<\/strong>.<\/p>\n\n\n\n<p>3. <strong>Fill out the basic settings:<\/strong> Choose a slug and a name for your new CPT. The plugin will ask you for both the singular and plural versions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1175\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings.webp\" alt=\"Custom Post Type UI configuration form for creating a &quot;portfolio&quot; post type with singular and plural labels for WordPress content management.\" class=\"wp-image-65873 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-300x220.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-1024x752.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-768x564.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-1536x1128.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-600x441.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-1200x881.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-730x536.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-1460x1072.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-784x576.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-1568x1152.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/03_basic_settings-877x644.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1175;\" \/><\/figure>\n\n\n\n<p>4. <strong>Choose your settings:<\/strong> This page has a huge range of options, allowing you to configure access, fields, functions, and additional labels for your new post type.<\/p>\n\n\n\n<p>5. <strong>Publish:<\/strong> Once you&#8217;re done, click the blue <strong>Add Post Type <\/strong>button to create your new CPT!<\/p>\n\n\n\n<p>The new custom post type will appear in the sidebar, like your Posts and Pages. You can open this new menu item to add and manage content.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"585\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1024x585.webp\" alt=\"WordPress admin sidebar showing new &quot;Portfolio items&quot; custom post type with menu visibility and icon configuration options.\" class=\"wp-image-65874 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1024x585.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-300x171.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-768x439.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1536x877.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-600x343.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1200x686.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-730x417.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1460x834.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-784x448.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-1568x896.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items-877x501.webp 877w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/04_portfolio_items.webp 1600w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/585;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Using WPCode for Manual Creation (Intermediate)<\/h3>\n\n\n\n<p>Let&#8217;s take things up a notch. If you&#8217;re comfortable customizing WordPress, this next method will give you more options to play with.<\/p>\n\n\n\n<p>It&#8217;s based around a plugin called <a target=\"_blank\" href=\"https:\/\/en-gb.wordpress.org\/plugins\/insert-headers-and-footers\/\">WPCode<\/a>, which helps you add PHP snippets to core files in a secure way.<\/p>\n\n\n\n<p>Here&#8217;s the process:<\/p>\n\n\n\n<p>1.<strong> Install the WPCode plugin: <\/strong>In the sidebar, visit <strong>Plugins<\/strong> &gt; <strong>Add New Plugin <\/strong>and search for &#8220;WPCode.&#8221; Install and activate it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1078\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin.webp\" alt=\"WordPress plugin directory search results for &quot;wpcode&quot; showing the WPCode custom code manager plugin with 2+ million active installations.\" class=\"wp-image-65875 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-300x202.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-1024x690.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-768x517.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-1536x1035.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-600x404.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-1200x809.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-730x492.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-1460x984.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-784x528.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-1568x1056.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/05_install_the_wpcode_plugin-877x591.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1078;\" \/><\/figure>\n\n\n\n<p>2. <strong>Add a new PHP snippet: <\/strong>Navigate to <strong>Code Snippets<\/strong> &gt;<strong> + Add Snippet<\/strong> via the sidebar menu.<\/p>\n\n\n\n<p>This will open up a library of ready-made code snippets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"913\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_.webp\" alt=\"WPCode plugin interface showing snippet library with options for creating custom code, generating AI snippets, and pre-made options like &quot;New&quot; badges and Open Graph tags.\" class=\"wp-image-65876 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-300x171.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-1024x584.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-768x438.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-1536x876.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-600x342.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-1200x685.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-730x417.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-1460x833.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-784x447.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-1568x895.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/06_generate_snippets_-877x500.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/913;\" \/><\/figure>\n\n\n\n<p>There&#8217;s loads of useful stuff here \u2014 but for this task, you need to select <strong>Add Your Custom Code (New Snippet)<\/strong>. It should be right at the top.<\/p>\n\n\n\n<p>3. <strong>Build your snippet: <\/strong>From the pop-up panel, choose <strong>PHP Snippet<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"766\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet.webp\" alt=\"Code type selection modal showing eight options including HTML, Text, Blocks, CSS, SCSS, JavaScript, PHP, and Universal snippets, with PHP highlighted.\" class=\"wp-image-65877 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-300x144.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-1024x490.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-768x368.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-1536x735.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-600x287.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-1200x575.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-730x349.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-1460x699.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-784x375.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-1568x751.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/07_php_snippet-877x420.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/766;\" \/><\/figure>\n\n\n\n<p>You should then see a nice big box for your code.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"953\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet.webp\" alt=\"WPCode editor showing PHP snippet for creating a custom &quot;portfolio&quot; post type with labels for singular and plural names.\" class=\"wp-image-65878 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-300x179.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-1024x610.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-768x457.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-1536x915.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-600x357.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-1200x715.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-730x435.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-1460x870.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-784x467.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-1568x934.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/08_custom_snippet-877x522.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/953;\" \/><\/figure>\n\n\n\n<p>To register your new CPT, you can paste in this template and make changes to match your requirements:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \/\/ Our custom post type function\n\n function create_posttype() {\n  \n    register_post_type( 'portfolio',\n    \/\/ CPT Options\n        array(\n            'labels' =&gt; array(\n                'name' =&gt; __( 'Portfolio' ),\n                'singular_name' =&gt; __( 'Portfolio Item' )\n            ),\n            'public' =&gt; true,\n            'has_archive' =&gt; true,\n            'rewrite' =&gt; array('slug' =&gt; 'portfolio'),\n            'show_in_rest' =&gt; true,\n  \n        )\n    );\n}\n\/\/ Hooking up our function to theme setup\nadd_action( 'init', 'create_posttype' );<\/code><\/pre>\n\n\n\n<p>4. <strong>Save and activate:<\/strong> Once you&#8217;re happy with your code, hit the <strong>Save <\/strong>button on the top right. To put your new post type into action, hit the toggle switch that currently says \u201cInactive<strong>\u201d <\/strong>and click <strong>Update <\/strong>to finish up.<\/p>\n\n\n\n<p>Once again, your new custom post type should appear in the sidebar menu. You can click on this label to start creating custom content!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Safety Tips<\/h3>\n\n\n\n<p>Whenever you&#8217;re playing with code in <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/guide-to-manual-wp-install\/\">WordPress<\/a>, think of yourself as a chemistry teacher doing a science experiment. Take some precautions, and you should avoid setting the whole place on fire\u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Test your new snippet on a staging site if possible.<\/li>\n\n\n\n<li>Always review and back up your website before adding new code.<\/li>\n\n\n\n<li>WPCode provides a sandboxed environment, but be careful if you&#8217;re not experienced with code.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Coding Directly in functions.php (Advanced)<\/h3>\n\n\n\n<p>Hello, WordPress veteran. You skipped to the end because you prefer to not use plugins. You just need a nudge in the right direction, and away you go.<\/p>\n\n\n\n<p>Here&#8217;s your workflow:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-back-up-wordpress-tutorial\/\"><strong>Back up your site<\/strong><\/a><strong>: <\/strong>An important precaution. We don&#8217;t want any whoopsies.<\/li>\n\n\n\n<li><strong>Set up a child theme: <\/strong>We have a <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-create-wordpress-child-theme\/\">full guide<\/a> ready for you explaining how to work on this.<\/li>\n\n\n\n<li><strong>Open your child theme\u2019s functions.php file:<\/strong> You can access it via WordPress (<strong>Appearance<\/strong> > <strong>Theme Editor<\/strong>)<strong> <\/strong>or via FTP. If you can&#8217;t see the Theme Editor in your admin sidebar, permissions, or your hosting provider might block it.<\/li>\n\n\n\n<li><strong>Insert your custom code: <\/strong>Here are some of the options you have to play with:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Register Custom Post Type for Portfolio\nfunction register_portfolio_post_type() {\n    $labels = array(\n        'name'                  =&gt; _x('Portfolios', 'Post Type General Name', 'textdomain'),\n        'singular_name'         =&gt; _x('Portfolio', 'Post Type Singular Name', 'textdomain'),\n        'menu_name'             =&gt; __('Portfolios', 'textdomain'),\n        'name_admin_bar'        =&gt; __('Portfolio', 'textdomain'),\n        'archives'              =&gt; __('Portfolio Archives', 'textdomain'),\n        'attributes'            =&gt; __('Portfolio Attributes', 'textdomain'),\n        'parent_item_colon'     =&gt; __('Parent Portfolio:', 'textdomain'),\n        'all_items'             =&gt; __('All Portfolios', 'textdomain'),\n        'add_new_item'          =&gt; __('Add New Portfolio', 'textdomain'),\n        'add_new'               =&gt; __('Add New', 'textdomain'),\n        'new_item'              =&gt; __('New Portfolio', 'textdomain'),\n        'edit_item'             =&gt; __('Edit Portfolio', 'textdomain'),\n        'update_item'           =&gt; __('Update Portfolio', 'textdomain'),\n        'view_item'             =&gt; __('View Portfolio', 'textdomain'),\n        'view_items'            =&gt; __('View Portfolios', 'textdomain'),\n        'search_items'          =&gt; __('Search Portfolio', 'textdomain'),\n        'not_found'             =&gt; __('Not found', 'textdomain'),\n        'not_found_in_trash'    =&gt; __('Not found in Trash', 'textdomain'),\n        'featured_image'        =&gt; __('Featured Image', 'textdomain'),\n        'set_featured_image'    =&gt; __('Set featured image', 'textdomain'),\n        'remove_featured_image' =&gt; __('Remove featured image', 'textdomain'),\n        'use_featured_image'    =&gt; __('Use as featured image', 'textdomain'),\n        'insert_into_item'      =&gt; __('Insert into portfolio', 'textdomain'),\n        'uploaded_to_this_item' =&gt; __('Uploaded to this portfolio', 'textdomain'),\n        'items_list'            =&gt; __('Portfolios list', 'textdomain'),\n        'items_list_navigation' =&gt; __('Portfolios list navigation', 'textdomain'),\n        'filter_items_list'     =&gt; __('Filter portfolios list', 'textdomain'),\n    );\n\n    $args = array(\n        'label'                 =&gt; __('Portfolio', 'textdomain'),\n        'description'           =&gt; __('A custom post type for portfolio items', 'textdomain'),\n        'labels'                =&gt; $labels,\n        'supports'              =&gt; array('title', 'editor', 'thumbnail', 'custom-fields'),\n        'hierarchical'          =&gt; false,\n        'public'                =&gt; true,\n        'show_ui'               =&gt; true,\n        'show_in_menu'          =&gt; true,\n        'menu_position'         =&gt; 5,\n        'menu_icon'             =&gt; 'dashicons-portfolio',\n        'show_in_admin_bar'     =&gt; true,\n        'show_in_nav_menus'     =&gt; true,\n        'can_export'            =&gt; true,\n        'has_archive'           =&gt; true,\n        'exclude_from_search'   =&gt; false,\n        'publicly_queryable'    =&gt; true,\n        'rewrite'               =&gt; array('slug' =&gt; 'portfolio'),\n        'capability_type'       =&gt; 'post',\n    );\n    register_post_type('portfolio', $args);\n}\nadd_action('init', 'register_portfolio_post_type');<\/code><\/pre>\n\n\n\n<p>Save and test. Once you&#8217;ve saved your changes, look for your new post type in the WordPress sidebar.<\/p>\n\n\n\n<p>Alternatively, you can do away with the whole child theme business and create a custom plugin, applying the same code we suggested above. Here\u2019s our <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-create-your-first-wordpress-plugin\/\">guide <\/a>on how to get started with custom plugins!<\/p>\n\n\n\n<h2 id=\"h2_popular-custom-post-types\" class=\"wp-block-heading\">Popular Custom Post Types<\/h2>\n\n\n\n<p>The reason custom post types are so powerful is that they are <em>truly<\/em> custom. If you can dream it, you can build it.<\/p>\n\n\n\n<p>That said, there are a few post types that regularly pop up on WordPress sites.&nbsp;<\/p>\n\n\n\n<p>Before you start trying to design something from scratch, it&#8217;s worth checking whether one of the formats below would meet your requirements.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Portfolio item: <\/strong>You could use a template that shows off individual images or one that packages project descriptions and outcomes in a case study format.<\/li>\n\n\n\n<li><strong>Testimonial: <\/strong>With a testimonial CPT, you could add star ratings and company logos. It would also allow you to organize testimonials without using blog categories.<\/li>\n\n\n\n<li><strong>Event: <\/strong>It&#8217;s possible to advertise events on a page, but you may have to use a cocktail of plugins to display dates, location maps, and RSVP options. A custom event post type could have these functions built in.<\/li>\n\n\n\n<li><strong>Product: <\/strong>If you&#8217;re trying to <a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-build-online-store-become-boss\/\">build an e-commerce store<\/a>, having a dedicated template for showing off your products is essential.\u00a0<\/li>\n\n\n\n<li><strong>Listing: <\/strong>The same goes for other listings, such as real estate and classifieds. Creating a separate CPT lets you set up a bespoke template and keep your listings neatly organized.<\/li>\n<\/ul>\n\n\n\n<p>As you plan upgrades to your site, consider whether these custom post types would fit your needs \u2014 or whether you need something completely custom!<\/p>\n\n\n\n<h2 id=\"h2_how-to-display-your-custom-post-types\" class=\"wp-block-heading\">How To Display Your Custom Post Types<\/h2>\n\n\n\n<p>Having registered the new CPTs, you need to decide how and where they should appear on your site.<\/p>\n\n\n\n<p>The options here are literally unlimited. And that can feel a bit overwhelming.<\/p>\n\n\n\n<p>If you&#8217;re not sure where to begin, try this starter pack:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Add Custom Post Types to Your Site Menu<\/h3>\n\n\n\n<p>There&#8217;s no point using custom posts if no one can find them.<\/p>\n\n\n\n<p>In your WordPress admin area, navigate to <strong>Appearance<\/strong> &gt; <strong>Menus<\/strong> and add the <a href=\"https:\/\/www.wpbeginner.com\/glossary\/archive\/\">new CPT archive<\/a> to your main menu.<\/p>\n\n\n\n<p>Be sure to change the label to make it clear what visitors can expect.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Dedicated Templates<\/h3>\n\n\n\n<p>You probably don&#8217;t want your new custom posts to be served up exactly like blog posts. That includes the archive page, where visitors can see your latest content.<\/p>\n\n\n\n<p>Creating a <a href=\"https:\/\/www.dreamhost.com\/blog\/wordpress-templates-template-parts\/\">new template<\/a> gives you the chance to build your own layout.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Visit your theme directory:<\/strong> Access your theme files via FTP or your WordPress theme editor.<\/li>\n\n\n\n<li><strong>Create a new template file: <\/strong>Name your file using this format: <strong>archive-{post_type}.php<\/strong>.<strong> <\/strong>For example, you could name it <strong>archive-movies.php<\/strong>.\u00a0<\/li>\n\n\n\n<li><strong>Customize the new template:<\/strong> Here&#8217;s your chance to get creative. Write or modify the code to include featured images, excerpts, custom fields, and more.<\/li>\n\n\n\n<li><strong>Style that thing: <\/strong>Add your own <a href=\"https:\/\/www.dreamhost.com\/blog\/learn-css\/\">CSS rules<\/a> or integrate your <a href=\"https:\/\/www.dreamhost.com\/blog\/css-frameworks\/\">design framework<\/a> to match the branding of your website.<\/li>\n\n\n\n<li><strong>Test, test, test: <\/strong>Make sure your new template is looking good on all devices.<\/li>\n<\/ol>\n\n\n\n<p>Need some inspiration? Check out other websites to see how they present similar content!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Display Posts in Widgets<\/h3>\n\n\n\n<p>Did you know you can display your custom posts in any widget area?&nbsp;All you need is a free plugin called<a href=\"https:\/\/en-gb.wordpress.org\/plugins\/custom-post-type-widgets\/\"> Custom Post Type Widgets<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"783\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget.webp\" alt=\"WordPress plugins page highlighting Custom Post Type Widgets plugin with 20,000+ installations alongside Advanced Custom Fields and Elementor addons.\" class=\"wp-image-65879 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-300x147.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-1024x501.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-768x376.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-1536x752.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-600x294.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-1200x587.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-730x357.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-1460x714.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-784x384.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-1568x767.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/09_custom_post_type_widget-877x429.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/783;\" \/><\/figure>\n\n\n\n<p>After you install and activate the plugin, head over to <strong>Appearance <\/strong>&gt;<strong> Widgets<\/strong> and add a new widget.<\/p>\n\n\n\n<p>From the big menu on the left, find and select <strong>Archives (Custom Post Type)<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1021\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type.webp\" alt=\"WordPress widgets section showing custom post type archive widgets, including options for displaying post archives in various widget areas.\" class=\"wp-image-65880 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-300x191.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-1024x653.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-768x490.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-1536x980.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-600x383.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-1200x766.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-730x466.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-1460x932.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-784x500.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-1568x1001.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/10_archives_custom_post_type-877x560.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1021;\" \/><\/figure>\n\n\n\n<p>You can then configure your widget to display any post type you want!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"977\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type.webp\" alt=\"Archives widget configuration panel with settings for post type, archive display type (monthly), dropdown options, post counts, and sort order.\" class=\"wp-image-65881 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-300x183.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-1024x625.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-768x469.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-1536x938.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-600x366.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-1200x733.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-730x446.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-1460x892.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-784x479.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-1568x957.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/11_widgets_archives_custom_post_type-877x536.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/977;\" \/><\/figure>\n\n\n\n<p><strong>\ud83d\udca1Top tip:<\/strong> This plugin also lets you display recent posts, a calendar view, a tag cloud, and more.<\/p>\n\n\n\n<h2 id=\"h2_upgrade-your-wordpress-site-today\" class=\"wp-block-heading\">Upgrade Your WordPress Site Today<\/h2>\n\n\n\n<p>WordPress is amazingly versatile. From code to quizzes, it can handle pretty much any type of content. But, as we&#8217;ve learned, things can get messy when you mix and match content types.<\/p>\n\n\n\n<p>If you want to create something more than standard posts and pages, it&#8217;s definitely worth using custom post types to keep your content tidy. The process is really easy, and it will instantly improve the usability of your site.<\/p>\n\n\n\n<p>While you&#8217;re thinking about upgrades\u2026have you heard about our <a href=\"https:\/\/www.dreamhost.com\/wordpress\/managed\/\">dedicated WordPress hosting<\/a>?<\/p>\n\n\n\n<p>Our plans offer <strong>one-click staging<\/strong>, <strong>bulletproof backups<\/strong>, <strong>built-in caching<\/strong>, and a <strong>performance boost from <\/strong><a href=\"https:\/\/bunny.net\/\"><strong>BunnyCDN<\/strong><\/a>. Plus, you get <a href=\"https:\/\/www.dreamhost.com\/features\/free-wordpress-migrations\/\">free migration<\/a>. It&#8217;s everything you need to take your WordPress site to the next level!<\/p>\n\n\n\n<p><a href=\"https:\/\/www.dreamhost.com\/wordpress\/managed\/\">Sign up today<\/a> to give your business website the hosting it deserves.<\/p>\n\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-wordpress-hosting-877x586.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-wordpress-hosting.webp 2x\"  alt=\"website management by DreamHost\" \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/wordpress\/managed-wp-hosting\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>WordPress Hosting<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tUnbeatable WordPress Hosting\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tReliable, lightning-fast hosting solutions specifically optimized for WordPress.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/wordpress\/managed-wp-hosting\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            See More                    <\/a>\n\n\t<\/div>\n<\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><em>This page contains affiliate links. This means we may earn a commission if you purchase services through our link without any extra cost to you<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stop cramming everything into Posts and Pages. Custom post types can revolutionize your WordPress site and showcase your business the way it deserves.<\/p>\n","protected":false},"author":1081,"featured_media":65870,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"Stop cramming everything into Posts and Pages. Custom post types can revolutionize your WordPress site and showcase your business the way it deserves.","toc_headlines":"[[\"h-what-are-custom-post-types-and-why-should-you-care\",\"What Are Custom Post Types (and Why Should You Care)?\"],[\"h2_4-telltale-signs-that-your-website-needs-custom-post-types\",\"4 Telltale Signs That Your Website Needs Custom Post Types\"],[\"h2_how-to-create-custom-post-types\",\"<br>How To Create Custom Post Types\"],[\"h2_popular-custom-post-types\",\"Popular Custom Post Types\"],[\"h2_how-to-display-your-custom-post-types\",\"How To Display Your Custom Post Types\"],[\"h2_upgrade-your-wordpress-site-today\",\"Upgrade Your WordPress Site Today\"]]","hide_toc":false,"footnotes":""},"categories":[550,696],"tags":[],"class_list":["post-65533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","category-wordpress"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>WordPress Custom Post Types Guide - DreamHost<\/title>\n<meta name=\"description\" content=\"Stop cramming everything into Posts and Pages. Custom post types can revolutionize your WordPress site and showcase your business the way it deserves.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Your Complete Guide to WordPress Custom Post Types\" \/>\n<meta property=\"og:description\" content=\"Learn how to use custom post types to better organize content and create a more dynamic, professional WordPress site.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-02T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-26T18:24:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1220x628_ogimage_custom_post_types_for_wp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Alejandro Granata\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Your Complete Guide to WordPress Custom Post Types\" \/>\n<meta name=\"twitter:description\" content=\"Learn how to use custom post types to better organize content and create a more dynamic, professional WordPress site.\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alejandro Granata\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress Custom Post Types Guide - DreamHost","description":"Stop cramming everything into Posts and Pages. Custom post types can revolutionize your WordPress site and showcase your business the way it deserves.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/","og_locale":"en_US","og_type":"article","og_title":"Your Complete Guide to WordPress Custom Post Types","og_description":"Learn how to use custom post types to better organize content and create a more dynamic, professional WordPress site.","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2025-05-02T14:00:00+00:00","article_modified_time":"2025-05-26T18:24:57+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1220x628_ogimage_custom_post_types_for_wp.webp","type":"image\/webp"}],"author":"Alejandro Granata","twitter_card":"summary_large_image","twitter_title":"Your Complete Guide to WordPress Custom Post Types","twitter_description":"Learn how to use custom post types to better organize content and create a more dynamic, professional WordPress site.","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Alejandro Granata","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/"},"author":{"name":"Alejandro Granata","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/8bfafd9aede4ad5a3bca7f83b60e3f72"},"headline":"Decoding WordPress: Your Complete Guide to Custom Post Types","datePublished":"2025-05-02T14:00:00+00:00","dateModified":"2025-05-26T18:24:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/"},"wordCount":2457,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1460x1095_blog_hero_custom_post_types_for_wp.webp","articleSection":["Tutorials","WordPress"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/","name":"WordPress Custom Post Types Guide - DreamHost","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1460x1095_blog_hero_custom_post_types_for_wp.webp","datePublished":"2025-05-02T14:00:00+00:00","dateModified":"2025-05-26T18:24:57+00:00","description":"Stop cramming everything into Posts and Pages. Custom post types can revolutionize your WordPress site and showcase your business the way it deserves.","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1460x1095_blog_hero_custom_post_types_for_wp.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/05\/1460x1095_blog_hero_custom_post_types_for_wp.webp","width":1460,"height":1095,"caption":"Decoding WordPress: Your Complete Guide to Custom Post Types"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/custom-post-types\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"Decoding WordPress: Your Complete Guide to Custom Post Types"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/8bfafd9aede4ad5a3bca7f83b60e3f72","name":"Alejandro Granata","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/Alejandro-150x150.jpg","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/Alejandro-150x150.jpg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/Alejandro-150x150.jpg","caption":"Alejandro Granata"},"description":"Alex is one of our WordPress specialists at DreamHost. He is responsible for providing technical support, optimization tips, and assisting customers with internal migrations. In his free time, he enjoys cooking, playing videogames, and reading. Follow Alex on LinkedIn: https:\/\/www.linkedin.com\/in\/agranata\/","sameAs":["https:\/\/www.linkedin.com\/in\/agranata\/"],"url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/alejandrogranata\/"}]}},"lang":"en","translations":{"en":65533,"es":65741,"it":68555,"fr":70684,"nl":70717,"ru":72150,"pt":72197,"uk":72199,"pl":72230,"de":72932},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/65533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1081"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=65533"}],"version-history":[{"count":8,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/65533\/revisions"}],"predecessor-version":[{"id":66401,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/65533\/revisions\/66401"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/65870"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=65533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=65533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=65533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}