public
Last active

T5 Embed Post Shortcode

  • Download Gist
t5-embed-post-shortcode.php
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
<?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 );
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.