Show All Custom Post Types On A Single Archive Page

You’ll need to create a custom template and run a custom query for it. Since WordPress doesn’t support “multitype archives” out of the box, you will probably want to use a Page for this archive.

If you don’t already have a custom theme or a child theme, create a child theme and add a file which you can name something like “tpl-multiarchive.php”. The specific name can be anything you like; the “tpl-” prefix is a common but not required convention. The comments at the top need to be something like:

<?php
/* Template Name: Multi-CPT Archive
*/
?>

You can then create a new Page where you want this archive to live and select this template name.

If you want to also manage some content at the top of the page, you can include a regular content Loop in the template and add whatever content you like within wp-admin. You will then want to create a second query to pull in posts from the 3 CPTs, and add pagination since presumably you probably don’t want to always show all of them at once.

If you do not want to manage any content on this page, but only have it display your CPTs and pagination, you may instead want to use the pre_get_posts filter to alter the main query. This way instead of just ignoring the first query that checks for the content of this Page, you can tell WordPress to immediately run a query to pull posts from the 3 CPTs, and not waste processing power. Usually this type of filter is placed inside functions.php. You can then add code to the template file to display the posts from the query however you like.