Skip to content

Instantly share code, notes, and snippets.

@thefuxia
Created August 17, 2012 15:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thefuxia/3380118 to your computer and use it in GitHub Desktop.
Save thefuxia/3380118 to your computer and use it in GitHub Desktop.
T5 Embed Post Shortcode
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 Embed Post Shortcode
* Description: Embed any page, post or custom post type with shortcode: <code>[embed_post id=1 title="hello" type="post"]</code>.
* Plugin URI: http://toscho.de/?p=2056
* Version: 2012.08.17
* Author: Thomas Scholz
* Author URI: http://toscho.de
* License: MIT
* License URI: http://www.opensource.org/licenses/mit-license.php
*
* T5 Embed Page Shortcode, Copyright (C) 2012 Thomas Scholz
*/
add_shortcode( 'embed_post', 't5_embed_post' );
/**
* Get a post per shortcode.
*
* @param array $atts There are three possible attributes:
* id: A post ID. Wins always, works always.
* title: A page title. Show the latest if there is more than one post
* with the same title.
* type: A post type. Only to be used in combination with one of the
* first two attributes. Might help to find the best match.
* Defaults to 'page'.
* @return string|void
*/
function t5_embed_post( $atts )
{
$defaults = array (
'id' => FALSE,
'title' => FALSE,
'type' => 'page'
);
extract( shortcode_atts( $defaults, $atts ) );
// Not enough input data.
if ( ! $id and ! $title )
{
return;
}
$post = FALSE;
if ( $id )
{
$post = get_post( $id );
}
elseif ( $title )
{
$post = get_page_by_title( $title, OBJECT, $type );
}
if ( $post )
{
return apply_filters( 'the_content', $post->post_content );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment