Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
programmieren:wordpress:eigenen_shortcode_erstellen [2022/05/20 13:50] – created jgehrkeprogrammieren:wordpress:eigenen_shortcode_erstellen [2022/12/17 12:28] (current) – external edit 127.0.0.1
Line 6: Line 6:
  
 Dieser Code ist ein Beispiel für einen eigene Shortcode, welcher einen Post-Teaser in einem Beitrag erzeugt. Der Redakteur kann optional eine Beitrags ID und die maximale Länge des Textauszuges (Excerpt) angeben. Dieser Code ist ein Beispiel für einen eigene Shortcode, welcher einen Post-Teaser in einem Beitrag erzeugt. Der Redakteur kann optional eine Beitrags ID und die maximale Länge des Textauszuges (Excerpt) angeben.
 +
 +===== Einfaches Beispiel =====
 +
 +<code php>
 +<?php
 +
 +namespace my_namespace;
 +
 +/*
 + [my_shortcode post_id="1"]
 + [my_shortcode]$content[/my_shortcode]
 + */
 +// Shortcode Registrieren
 +add_shortcode( 'my_shortcode', 'my_namespace\shortcode_logic' );
 +
 +// Die Shortcode Funktion - hier nur Logik und HTML am besten in eine eigene Funktion legen
 +function shortcode_logic( $atts = [], $content = null ) {
 + $defaults = [
 + 'post_id' => '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 = "
 + <div class=\"post-teaser\">
 + Die Post-ID ist: {$post_id}
 + </div>
 + ";
 +
 + return $return_html;
 +}
 +
 +</code>
 +
 +===== Beispiel in Anwendung =====
 +
 +Dieser Shortcode gibt einen Post-Teaser aus.
  
 <code php> <code php>
Line 13: Line 59:
  [display_post_teaser post_id="1" limit_excerpt="30" ]  [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' ); 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 ) { function display_post_teaser( $atts ) {
  $defaults = [  $defaults = [
Line 29: Line 77:
 } }
  
 +// 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 ){ function get_post_teaser_html( $post_id, $limit_excerpt = 30 ){
  $post_object = get_post( $post_id, 'OBJECT', 'display' );  $post_object = get_post( $post_id, 'OBJECT', 'display' );

Page Tools