Weitere Informationen und den Download findest du auf der offiziellen Anlaufstelle de.wordpress.org
Ergebnis 1 bis 10 von 10
  1. #1
    PostRank: 5
    Registriert seit
    10.06.2010
    Ort
    Deutsch Evern
    Beiträge
    392

    PHP in Widgets

    Hallo zusammen!

    Auf meiner Webseite themenfreund.de habe ich Probleme mit der Ausführung von PHP in den Widgets.

    Es wird eigentlich nur der in das Widget eingegebene Code angezeigt.

    Woran kann das liegen?
    themenfreund.de - Der tägliche Wahnwitz


  2. #2
    WPDE-Moderator Avatar von maxe
    Registriert seit
    01.05.2008
    Beiträge
    18.056
    PHP Code ist von Haus aus in Widgets nicht erlaubt.
    Bitte immer zuerst die Suchmaschine Deines Vertrauens nutzen, dann die FAQ und die Forensuche, und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.

    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

  3. #3
    PostRank: 5
    Registriert seit
    10.06.2010
    Ort
    Deutsch Evern
    Beiträge
    392
    Hallo Maxe!

    Das weiß ich im Prinzip.

    Aber auf einer Test-Installation wird folgender Code problemlos ausgeführt:

    Code:
    <?php tp_show_blogroll_rss_links( array('show_items' => 3,
                     'category' => false, 'item_order' => 'rand()', 
                   'older_than' => 72,
                    'show_date' => 1,
                    'show_image' => 'create-thumbnails',
                    'thumb_size' => 70,
                'show_summary' => 3,
                    'summary_length' => 100) ); ?>
               <a href="https://themenfreund.de/blogroll-2" title="Weitere Blogroll-Eintr&auml;ge">Weitere Eintr&auml;ge</a>
    themenfreund.de - Der tägliche Wahnwitz

  4. #4
    r23
    r23 ist offline
    PostRank: 10
    Registriert seit
    09.12.2006
    Beiträge
    3.899
    Zitat Zitat von Marcuss Beitrag anzeigen
    Woran kann das liegen?
    fehlendes Plugin

    https://de.wordpress.org/plugins/php-code-widget/

  5. #5
    PostRank: 10 Avatar von b3317133
    Registriert seit
    21.11.2014
    Beiträge
    2.287
    PHP Code Widget - Getestet bis: 4.7.8
    Sollte man mit Vorsicht geniessen, aktuell ist WordPress 4.9.x, mit veränderten HTML/Text-Widgets seit WordPress 4.8.x

    Eine bessere Lösung wäre wohl ein Shortcode, der seit WordPress 4.9.x ohne weitere Anpassungen in den Widgets ausgeführt wird.
    Geändert von b3317133 (09.12.2017 um 14:28 Uhr) Grund: Besser ein Shortcode..

  6. #6
    PostRank: 5
    Registriert seit
    10.06.2010
    Ort
    Deutsch Evern
    Beiträge
    392
    Frage hat sich erledigt, habe folgende Funktion als hinzugefügten Code aktiviert

    Code:
    function php_execute($html){if(strpos($html,"<"."?php")!==false){ ob_start(); eval("?".">".$html);
    $html=ob_get_contents();
    ob_end_clean();
    }
    return $html;
    }
    add_filter('widget_text','php_execute',100);
    Geändert von Marcuss (09.12.2017 um 15:30 Uhr)
    themenfreund.de - Der tägliche Wahnwitz

  7. #7
    PostRank: 10 Avatar von danielgoehr
    Registriert seit
    13.07.2016
    Ort
    Berlin
    Beiträge
    1.932
    Zitat Zitat von Marcuss Beitrag anzeigen
    Frage hat sich erledigt, habe folgende Funktion als hinzugefügten Code aktiviert

    Code:
    function php_execute($html){if(strpos($html,"<"."?php")!==false){ ob_start(); eval("?".">".$html);
    $html=ob_get_contents();
    ob_end_clean();
    }
    return $html;
    }
    add_filter('widget_text','php_execute',100);
    Ich hoffe, du weißt, was du da tust. Theoretisch baust du dir damit eine nicht zu unterschätzende Sicherheitslücke ein. Das *muss* kein Problem sein. Aber du solltest genau verstanden haben, was du da "aktiviert" hast. Zu beachten dabei ist vor allem auch folgender Hinweis zum Hook aus dem Codex:
    May also apply to some third party widgets as well.
    Die Shortcode-Variante von @b3317133 ist in jedem Fall vorzuziehen.

  8. #8
    PostRank: 5
    Registriert seit
    10.06.2010
    Ort
    Deutsch Evern
    Beiträge
    392
    Danke für den Hinweis!

    Meine Freude war wohl auch etwas voreilig, denn es erscheint wieder nur die Ausgabe des Codes.

    Nun zum Shortcode:

    Wie arbeite ich diesen Code

    Code:
    <ol> 	<li style="list-style-type: none;">
    <div class="new-article"><strong><a title="&lt;?php the_title(); ?&gt;" href="&lt;?php the_permalink() ?&gt;" rel="bookmark"><!--?php if (strlen($post-&gt;post_title) &gt; 20) {&lt;br ?--> echo substr(the_title($before = '', $after = '', FALSE), 0, 30) . '...'; } else {
    the_title();
    } ?&gt;</a></strong></div>
    &nbsp;</li>
    </ol>
    denn in einen Shortcode um? Das hab ich noch nicht kapiert
    Geändert von Marcuss (09.12.2017 um 16:06 Uhr)
    themenfreund.de - Der tägliche Wahnwitz

  9. #9
    PostRank: 10 Avatar von b3317133
    Registriert seit
    21.11.2014
    Beiträge
    2.287
    Man nimmt das Beispiel von der Shortcode Dokumentation und setzt den (etwas korrigierten) Code dazwischen, z.B. so:
    PHP-Code:
    <?php
    function foobar_func$atts ) {
        
    ob_start();
        global 
    $post;
        if ( 
    is_a$postWP_Post ) ) {
            
    $title get_the_title();
    ?>
    <ol>
        <li style="list-style-type: none;">
            <div class="new-article"><strong><a title="<?php echo esc_attr$title ); ?>" href="<?php the_permalink(); ?>" rel="bookmark"><?php
                    
    if ( strlen$title ) > 20 ) {
                        
    $title substr$title020 ) . '...';
                    }
                    echo 
    $title;
                
    ?></a></strong></div>
        </li>
    </ol>
    <?php
        
    }
        return 
    ob_get_clean();
    }
    add_shortcode'foobar''foobar_func' );
    Wobei zu beachten ist, dass je nach Position des Widgets und Seiten-Typ $post einen anderen Bezug/Inhalt haben kann. Der Code zeigt nur das Prinzip auf...
    Geändert von b3317133 (09.12.2017 um 19:03 Uhr)

  10. #10
    PostRank: 5
    Registriert seit
    10.06.2010
    Ort
    Deutsch Evern
    Beiträge
    392
    Danke soweit schon mal.

    Nun habe ich noch ein anderes Problem mit den Widgets:

    Wenn ich die Seite mit dem offenen Widget per F5 aktualisiere, verschwindet der Code, und es erscheint ein '&nbsp;' (ohne die ' natürlich)


    Beispiel: Aus

    Code:
    <?php echo top_commentators_monat(); ?>                <h3 class="sidebar-title4">Top Kommentatoren der letzten 365 Tage:</h3>
                    <?php echo top_commentators_jahr(); ?>
    wird nach dem F5

    Code:
    &nbsp;
    <h5 class="sidebar-title4">Top Kommentatoren letzte 365 Tage:</h5>
    &nbsp;
    Hat das schon mal jemand gehabt?
    Geändert von Marcuss (09.12.2017 um 20:21 Uhr)
    themenfreund.de - Der tägliche Wahnwitz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •