WordPress.org

Plugin Directory

Test out the new Plugin Directory and let us know what you think.

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.

3.1.8

  • Fix for widget being used in the Beaver Builder widget interface.

3.1.7

  • Plugin is now translatable (internationalization). Props @maxgx for getting the ball rolling and creating a translation.

3.1.6

  • Fix for TinyMCE toolbar button not appearing for authors and contributors. Props @fernandosalvato for the report.
  • Fix for deprecation warning in PHP 7. Props @christer_f for the report.

3.1.5

  • Fix for php warning when inserting page outside of The Loop while using Beaver Builder. Props @jeffreytanuwidjaja for the report.

3.1.4

  • Compatibility for for php versions lower than 5.3. Replace closure with create_function().

3.1.3

  • Prevent menu items and page attachments from being insertable; this fixes problems with inserting pages via slug when there is a menu item with the same slug as a page/post. Props @k7f7 for tracking this one down!

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.6.2
Last Updated: 2 months ago
Active Installs: 10,000+

Ratings

4.6 out of 5 stars

Support

0 of 8 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
100,1,1
100,1,1
100,1,1 100,1,1