'1',
];
$atts = shortcode_atts( $defaults, $atts );
// Falls im Text-Content auch Shortcodes enthalten sein dürfen
// $content = do_shortcode( $content );
$return_html = shortcode_html( $atts['post_id'] );
return $return_html;
}
// HTML Renderer - zur sauberen Trennung
function shortcode_html( $post_id ){
$return_html = "
===== Beispiel in Anwendung =====
Dieser Shortcode gibt einen Post-Teaser aus.
";
return $return_html;
}
namespace brandgrad;
/*
[display_post_teaser post_id="1" limit_excerpt="30" ]
*/
// Den Code registrieren, das WP weiß welche Funktion es aufrufen muss
add_shortcode( 'display_post_teaser', 'brandgrad\display_post_teaser' );
// Die eigentliche Funktion die an WP zurück gibt was ausgegeben werden soll
function display_post_teaser( $atts ) {
$defaults = [
'post_id' => '1',
'limit_excerpt'=> '30',
];
$atts = shortcode_atts( $defaults, $atts );
$post_id = (int) $atts['post_id'];
$limit_excerpt = (int) $atts['limit_excerpt'];
$return_html = get_post_teaser_html( $post_id, $limit_excerpt );
return $return_html;
}
// Das ist nur eine Helfer Funktion, damit der Code in der Shortcode Funktion nicht zu lang und unübersichtlich wird
function get_post_teaser_html( $post_id, $limit_excerpt = 30 ){
$post_object = get_post( $post_id, 'OBJECT', 'display' );
if( !$post_object ){ return "Beitrag mit der ID: {$post_id} nicht gefunden.
"; }
$title = $post_object->post_title;
$excerpt = $post_object->post_excerpt;
$has_excerpt = ( strlen($excerpt) > 0 ) ? true : false;
$excerpt = ( $has_excerpt ) ? $excerpt : wp_trim_words( $post_object->post_content, $limit_excerpt );
$permalink = get_the_permalink( $post_id );
$thumb_url = get_the_post_thumbnail_url( $post_id, 'full' );
$return_html = "
";
return $return_html;
}