WordPress.org

Plugin Directory

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. It als

3.1.2

  • Fix for custom template dropdown not enabling when configuring the widget on the theme customizer page (customize.php). Props @aassouad for finding this!

3.1.1

3.1

  • Feature: Insert Page widget. Go to Appearance > Widgets to add the Insert Page widget to any of your widget areas. Specify a page slug or ID in the widget, and that page will get displayed in the widget area.

3.0.2

  • Hotfix: Inserting posts with custom paths using legacy insert method.

3.0.1

  • Hotfix: Version 3 broke some plugin compatibility (most notably with Beaver Builder and Page Builder by SiteOrigin). This update should restore functionality.
  • Hotfix: Version 3 broke some page displays (e.g., content, all). This update should restore functionality.

3.0

  • Hotfix: 2.9.1 broke extra classes added to the inserted page wrapper. Props @philipsacht!
  • Feature: Expose extra classes and inline status in tinymce dialog.
  • One more API change to insert_pages_wrap_content_filter (2nd parameter is a WP_Post now instead of an array of WP_Posts, since we only ever insert one page). Example 1:
/**
 * Enable nested shortcodes by hooking into insert_pages_wrap_content.
 *
 * @param string $content The post content of the inserted page.
 * @param array $inserted_page The post object returned from querying the inserted page.
 * @param array $attributes Extra parameters modifying the inserted page.
 *   page: Page ID or slug of page to be inserted.
 *   display: Content to display from inserted page.
 *   class: Extra classes to add to inserted page wrapper element.
 *   inline: Boolean indicating wrapper element should be a span.
 *   should_apply_nesting_check: Whether to disable nested inserted pages.
 *   should_apply_the_content_filter: Whether to apply the_content filter to post contents and excerpts.
 *   wrapper_tag: Tag to use for the wrapper element (e.g., div, span).
 */
function your_custom_wrapper_function( $content, $inserted_page, $attributes ) {
    return do_shortcode( $content );
}
add_filter( 'insert_pages_wrap_content', 'your_custom_wrapper_function', 9, 3 );

Example 2:

/**
 * Completely modify markup generated by Insert Pages by hooking into insert_pages_wrap_content.
 *
 * @param string $content The post content of the inserted page.
 * @param array $inserted_page The post object returned from querying the inserted page.
 * @param array $attributes Extra parameters modifying the inserted page.
 *   page: Page ID or slug of page to be inserted.
 *   display: Content to display from inserted page.
 *   class: Extra classes to add to inserted page wrapper element.
 *   inline: Boolean indicating wrapper element should be a span.
 *   should_apply_nesting_check: Whether to disable nested inserted pages.
 *   should_apply_the_content_filter: Whether to apply the_content filter to post contents and excerpts.
 *   wrapper_tag: Tag to use for the wrapper element (e.g., div, span).
 */
function your_custom_wrapper_function( $content, $inserted_page, $attributes ) {
    // Remove the default filter that wraps the content in a div or span.
    remove_all_filters( 'insert_pages_wrap_content', 10 );
    // Return your custom wrapper around the content.
    return "<section class='my-section {$attributes['class']}'>$content</section>";
}
add_filter( 'insert_pages_wrap_content', 'your_custom_wrapper_function', 9, 3 );

2.9.1

  • API Change: modify insert_pages_wrap_content filter. Props @heiglandreas.

2.9

  • Add filter for altering the markup generated by Insert Pages. This filter is used internally at priority 10, so if you want to modify $content, do it earlier (priority 1-9); if you want to reconstruct the generated markup using the supplied parameters, do it after (priority 11+). Props @heiglandreas!

2.8

  • Feature: Add options page with option to insert page IDs instead of page slugs (users of WPML will need this feature if translated pages all share the same page slug).
  • Feature: Inserted pages with Beaver Builder enabled now embed correctly.
  • Fix: TinyMCE toolbar button states (active, disabled) have been fixed.
  • Fix: TinyMCE cursor detection inside an existing shortcode has been fixed.
  • Fix: Expanded options in Insert Pages popup now correctly remembers last choice.
  • Fix: Restore missing spinners in search dialog.
  • Fix: prevent PHP warning when rendering wp_editor() outside of edit context. Props Jerry Benton.

2.7.2

  • Add shortcode attribute to wrap inserted content in an inline element (span) instead of a block level element (div). Example usage:
Lorem ipsum [insert page='my-page' display='content' inline] dolor sit amet.
  • Add filter to wrap inserted content in an inline element (span) instead of a block level element (div). Example usage:
function theme_init() {
    // Wrap all inserted content in inline elements (span).
    add_filter( 'insert_pages_use_inline_wrapper', function ( $should_use_inline_wrapper ) { return true; } );
}
add_action( 'init', 'theme_init' );

2.7.1

  • Add filter to show a message when an inserted page cannot be found. Example usage:
function theme_init() {
    // Show a message in place of an inserted page if that page cannot be found.
    add_filter( 'insert_pages_not_found_message', function ( $content ) { return 'Page could not be found.'; } );
}
add_action( 'init', 'theme_init' );

2.7

  • Fix: Prevent Insert Pages from breaking tinymce if wp_editor() is called outside of an admin context.

2.6

  • Fix: Query data wasn't getting reset properly when viewing a category archive containing a post with an inserted page, causing date and author information in post footers in the twentyfifteen theme to show incorrect information. This has been resolved.

2.5

  • Maintenance release: prevent infinite loops when using a custom template that doesn't call the_post().

2.4

  • Add insert_pages_apply_nesting_check filter. Use it to disable the deep nesting check which prevents inserted pages from being embedded within other inserted pages. Example usage:
function theme_init() {
    // Disable nesting check to allow inserted pages within inserted pages.
    add_filter( 'insert_pages_apply_nesting_check', function ( $should_apply ) { return false; } );
}
add_action( 'init', 'theme_init' );

2.3

  • Remove insertPages_Content id from div wrapper to allow multiple pages to be embedded; replace with insert-page class. Example: <div data-post-id='123' class='insert-page insert-page-123'>...</div>
  • New shortcode attribute: class. You can now add custom classes to the div wrapper around your inserted page:
[insert page='123' display='all' class='my-class another-class']

This results in:

<div data-post-id='123' class='insert-page insert-page-123 my-class another-class'>...</div>

2.2

  • Revert previous fix for conflict with Jetpack's Sharing widget (affected other users negatively).
  • New fix for conflict with Jetpack's Sharing widget. Use it in your theme like so:
// If Jetpack Sharing widget is enabled, disable the_content filter for inserted pages.
function theme_init() {
    if ( has_filter( 'the_content', 'sharing_display' ) ) {
        add_filter( 'insert_pages_apply_the_content_filter', function ( $should_apply ) { return false; } );
    }
}
add_action( 'init', 'theme_init' );

2.1

  • Add quicktag button for Insert Pages to the Text Editor.
  • Fix conflict with Jetpack's Sharing widget.
  • Add stronger infinite loop protection (will stop expanding shortcodes nested within an embedded page).
  • Fix potential infinite loop if custom template can't be found.

2.0

  • Add insert_pages_available_post_types filter to limit post types shown in insert pages dialog (see FAQ for example filter hook). Props @noahj for the feature request.
  • Add excerpt-only display to output the excerpt without the title above it. Props @kalico for the feature request.

1.9

  • Add data-post-id attribute to div container for each inserted page, now you can reference via jQuery with .data( 'postId' ). Props to Robert Payne for the pull request, thanks!

1.8

  • Fix for custom post types marked as exclude_from_search not inserting correctly.

1.7

1.6

  • Fix for long page template names causing Display field to wrap in the tinymce popup;
  • Marked as WordPress 4.0 compatible.

1.5

  • Fix for options button toggle in tinymce popup;
  • Fix popup display on small screen sizes (mobile-friendly).

1.4

  • Update for WordPress 3.9 (update to work under tinymce4);
  • Can now edit existing shortcodes (click inside them, then click the toolbar button).

1.3

  • Better documentation.

1.2

  • Add retina toolbar icon.

1.1

  • Minor changes to documentation.

1.0

  • Initial release.

0.5

  • Development release.

Requires: 3.0.1 or higher
Compatible up to: 4.5.2
Last Updated: 1 month ago
Active Installs: 10,000+

Ratings

4.7 out of 5 stars

Support

8 of 11 support threads in the last two months have been marked resolved.

Got something to say? Need help?

Compatibility

+
=
Not enough data

0 people say it works.
0 people say it's broken.

0,1,0
100,1,1
0,2,0
0,1,0 0,1,0 0,1,0
0,1,0
100,1,1 0,1,0 100,1,1
100,1,1 100,1,1
100,1,1
100,1,1
100,1,1
100,1,1
100,1,1 100,1,1
100,2,2
100,1,1