Support » Allgemeine Fragen » Theme erlaubt keine Shortcodes

  • Gelöst svenwaser

    (@svenwaser)


    Guten Tag

    Ich bin dabei mein eigenes Theme zu erstellen. Ich wollte nun einige Shortcoeds verwenden. Leider gibt er mir dann immer den raw output ([shortcodename]) und nicht den Inhalt des Shortcode.

    Um an den Inhalt zu gelangen, verwende ich folgende Funktion:

    function post_content($page = null){
      //Define variables
      $page = get_post($page);
      $userData = get_userdata($page->post_author);
      $months_german = array(1 => 'Januar', 2 => 'Februar', 3 => 'März.', 4 => 'April', 5 => 'Mai', 6 => 'Juni', 7 => 'Juli', 8 => 'August', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Dezember');
    
      /*
      * Create page content
      */
      $html = '<div class="post-container">';
        //If the page has an featured image, display it
        if(get_the_post_thumbnail_url($page)){
          $html .= '<div class="header-image" style="background-image: url(\''.get_the_post_thumbnail_url($page).'\')"></div>';
        }
        //Start with content
        $html .= '<div class="content">';
          //General information (Title, date, author)
          $html .= '<div class="headline">';
            $html .= '<h1 class="title">'.$page->post_title.'</h1>';
            $html .= '<span class="time-author">'.date("j", strtotime($page->post_date)).' '.$months_german[date("n", strtotime($page->post_date))].' '.date("Y H:i", strtotime($page->post_date)).' |  von '.$userData->display_name.'</span>';
          $html .= '</div>';
          //Start maincontent
          $html .= '<div class="text">'.$page->post_content.'</div>';
        $html .= '</div>';
      $html .= '</div>';
    
      echo $html;
    }

    Um ein Shortcode zu erzeugen:

    function lorem_function(){
      return "<p>Lorem Ipsum dolor sit amet</p>";
    }
    
    add_shortcode('lorem', 'lorem_function');

    Ich verwende beide Funktionen im functions.php dokument.

    Vielen Dank für die Hilfe

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Hallo,
    mit der Frage wendest du dich besser an das folgende Forum, weil wir hier in erster Linie Anwenderfragen beantworten.
    Viele Grüße
    Hans-Gerd

    Mit $page->post_content gibst du nur den Inhalt des Array aus, ohne ihn zu filtern. Filtern bedeutet, dass der Text nicht automatisch Absätze erhält und Text in eckigen Klammern auch nicht als Shortcode interpretiert wird. Ergebnis ist, dass dir der Shortcode nur als Text in eckigen Klammern ausgegeben wird, statt an dieser Stelle die Shortcode-Funktion auszuführen.

    Damit der Shortcode ausgewertet wird, kannst du folgenden Code verwenden:

    $content = apply_filters( 'the_content', $page->post_content );
    $html .= '<div class="text">' . $content . '</div>';
    Thread-Starter svenwaser

    (@svenwaser)

    Vielen Dank!

    Somit hat es funktioniert!

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Theme erlaubt keine Shortcodes“ ist für neue Antworten geschlossen.