Insert Pages
Insert Pages lets you embed any WordPress content (e.g., pages, posts, custom post types) into other WordPress content using the Shortcode API.
Solid choice
Insert Pages is a solid plugin choice in 2026, with a few things worth checking first. It runs on 30K+ sites, is rated 4.8/5 and was last updated 3 months ago, and scores 75/100 on our health check.
- Proven at scale on 30K+ active sites
- Loved by users — 4.8/5 from 71 reviews
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where Insert Pages stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| embed | #80 |
| insert | #3 |
| pages | #3 |
| shortcode | #89 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 4.8 from 71 reviews
About Insert Pages
From the official readme · v3.11.5Description
Insert Pages lets you embed any WordPress content (e.g., pages, posts, custom post types) into other WordPress content using the Shortcode API. It also includes a widget for inserting pages into any widget area.
The real power of Insert Pages comes when you start creating custom post types, either programmatically in your theme, or using another plugin like Custom Post Type UI. You can then abstract away common data types (like videos, quizzes, due dates) into their own custom post types, and then show those pieces of content within your normal pages and posts by Inserting them as a shortcode.
Advanced Tutorial
Contributor Wes Modes has graciously written an updated tutorial for the Gutenberg era, focused on creating a custom post type with custom fields and a custom template for rendering content. Read it here: https://medium.com/@wesmodes/using-wordpress-insert-pages-plugin-with-your-custom-post-types-and-custom-templates-535c141f9635
Example: Normal Use Case
Say you teach a course and you’re constantly referring to an assignment due date in your course website. The next semester the due date changes, and you have to go change all of the locations you referred to it. Instead, you’d rather just change the date once! With Insert Pages, you can do the following:
- Create a custom post type called Due Date.
- Create a new Due Date called Assignment 1 Due Date with Fri Nov 22, 2013 as its content.
- Edit all the pages where the due date occurs and use the Insert Pages toolbar button to insert a reference to the Due Date you just created. Be sure to set the Display to Content so Fri Nov 22, 2013 shows wherever you insert it. The shortcode you just created should look something like this:
[insert page='assignment-1-due-date' display='content'] - That’s it! Now, when you want to change the due date, just edit the Assignment 1 Due Date custom post you created, and it will automatically be updated on all the pages you inserted it on.
Example: Advanced Use Case
Say your site has a lot of video content, and you want to include video transcripts and video lengths along with the videos wherever you show them. You could just paste the transcripts into the page content under the video, but then you’d have to do this on every page the video showed on. (It’s also just a bad idea, architecturally!) With Insert Pages, you can use a custom post type and create a custom theme template to display your videos+transcripts+lengths just the way you want!
- Create a custom post type called Video.
- Use a plugin like Advanced Custom Fields to add extra fields to your new Video custom post type. Add a Video URL field, a Transcript field, and a Video Length field.
- Create a new Video called My Awesome Video with the following values in its fields:
- Video URL: http://www.youtube.com/watch?v=oHg5SJYRHA0
- Transcript: We’re no strangers to love, You know the rules and so do I…
- Video Length: 3:34
- Create a template in your theme so we can display the video content as we want. I won’t cover this step here since it’s pretty involved, but you can find more help in the WordPress Codex. Let’s assume you created a template called Video with transcript (video-with-transcript.php) that shows the youtube video in a fancybox, and includes a button that shows the text transcript when a user clicks on it.
- Edit the pages where you want the video to show up and use the Insert Pages toolbar button to insert a reference to the Video you just created. Be sure to set the Display to Use a custom template, and select your new template Video with transcript. The shortcode you just created should look something like this:
[insert page='my-awesome-video' display='video-with-transcript.php'] - That’s it! Now you can create all sorts of video content and know that it’s being tracked cleanly in the database as its own custom post type, and you can place videos all over your site and not worry about lots of duplicate content.
The possibilities are endless!
Installation
- Upload “insert-pages” to the “/wp-content/plugins/” directory.
- Activate the plugin through the “Plugins” menu in WordPress.
- Use the toolbar button while editing any page to insert any other page.
Frequently asked questions
How do I create a custom template for use by Insert Pages?
A basic template would look like the following. This would be a file on your theme directory, e.g., your-custom-template.php: You can use whatever template tags that you’d like, check out the WordPress documentation. https://developer.wordpress.org/themes/basics/template-tags/ https://developer.wordpress.org/themes/references/list-of-template-tags/
How do I limit the list of pages in the dialog to certain post types?
You can hook into the ‘insert_pages_available_post_types’ filter to limit the post types displayed in the dialog. Here’s an example filter that just shows Posts: /** * Filter the list of post types to show in the insert pages dialog. * * @param $post_types Array of post type names to include in the insert pages list. */ function only_insert_posts( $post_types ) { return array( 'post' ); } add_filter( 'insert_pages_available_post_types', 'only_insert_posts' );
Do I have to use the toolbar button to Insert Pages?
No! You can type out the shortcode yourself if you’d like, it’s easy. Here’s the format: [insert page='{slug}|{id}' display='title|link|content|all|{custom-template.php}'] Examples: [insert page='your-page-slug' display='link'] [insert page='your-page-slug' display='your-custom-template.php'] [insert page='123' display='all']
Anything I should be careful of?
Just one! The plugin prevents you from embedding a page in itself, but you can totally create a loop that will prevent a page from rendering. Say on page A you embed page B, but on page B you also embed page A. As the plugin tries to render either page, it will keep going down the rabbit hole until your server runs out of memory. Future versions should have a way to prevent this behavior!
Changelog
If you intentionally insert unpublished content (e.g., future, draft, pending, or private), go to Insert Pages Settings after installing this update and enable that functionality in "Allow anonymous users to see inserted pages with these statuses." This version changes the plugin behavior to only allow inserting the "publish" post status by default (more secure).
3.11.5
- Medium security fix when inserting a page with malicious post meta key values and using display=”all”. Props Athiwat Tiprasaharn for responsibly reporting via Wordfence!
3.11.4
- Tested up to WordPress 7.0.
3.11.3
- Modified fix for Divi redirecting to inserted page in the editor. Props airflo for the continued troubleshooting!
3.11.2
- Fix for Divi redirecting to inserted page when an Insert Pages shortcode exists in the classic editor. Props airflo for the report!
3.11.1
- Fix inserting pages with parentheses in the page slug/title. Props @lineuponline for the report!
3.11.0
- NOTICE: If you intentionally insert unpublished content (e.g., future, draft, pending, or private), go to Insert Pages Settings after installing this update and enable that functionality in “Allow anonymous users to see inserted pages with these statuses.” This version changes the plugin behavior to only allow inserting the “publish” post status by default (more secure).
- Add plugin option to choose post statuses other than “published” that can be publicly viewable.
- Remove the “Reveal Private Pages?” block attribute (and the “public” shortcode attribute) that allowed inserted private pages to be publicly viewable, since it can be controlled by lower-privilege users. Use the new plugin option above to set this behavior.
- Prevent inserting pages with trash or revision post statuses (security).
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best Insert Pages alternatives
All embed plugins →FAQ
Insert Pages: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Sep 27, 2026
Is Insert Pages free?
Yes. Insert Pages is free to download and use from the official WordPress.org plugin directory.
Is Insert Pages safe to use in 2026?
Insert Pages is a solid plugin choice in 2026, with a few things worth checking first. It runs on 30K+ sites, is rated 4.8/5 and was last updated 3 months ago, and scores 75/100 on our health check.
How many websites use Insert Pages?
Insert Pages is active on 30K+ WordPress websites and has been downloaded 1,087,911 times since it launched in November 2013. It was downloaded 3,659 times in the last 30 days.
Does Insert Pages work with WordPress 7.1?
Insert Pages is officially tested up to WordPress 7.0.6, while the latest release is 7.1.2. It may still work, but try it on a staging site first.
When was Insert Pages last updated?
The latest version, 3.11.5, was released on June 19, 2026 (3 months ago).
Who makes Insert Pages?
Insert Pages is developed and maintained by Paul Ryan.
What are the best alternatives to Insert Pages?
The most popular alternatives to Insert Pages are EmbedPress (100K+ installs), iframe (60K+ installs) and Advanced iFrame (40K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card


