Support » Allgemeine Fragen » Code Snippet

  • Ich habe bei einer Webpräsenz erfolgreich mit Code Snippets gearbeitet, war aber so blöd, die Seite abzugeben, ohne mir die Snippets zu kopieren.

    Jetzt fange ich wieder von vorne an:

    Ich benutze das Plgin „Code Snippets“. Ich habe folgendes einfache Snippet gebastelt:

    function piwigo($args) {
    	$text=$args[text];
    	$nr=$args[nr];
    
    	$out = '<p><a href="http://piwigo.sonoptikon.de/index.php?/category/' . $nr .'" target="_blank" rel="noopener noreferrer">' . $text . '</a></p>';
    	return $out;
    };
    add_shortcode( 'snippet_piwigo','piwigo' )

    Auf der Seite gebe ich dann ein:
    [ snippet_piwigo text="Gruppenbild 2012" nr=7 ]

    Ich sehe dann auf der Seite das snippet, aber nicht das gewünschte Ergebnis. Warum ist das so?
    Danke für Hilfe

    • Dieses Thema wurde geändert vor 2 Monate, 4 Wochen von sonoptikon.
    • Dieses Thema wurde geändert vor 2 Monate, 4 Wochen von sonoptikon.
    • Dieses Thema wurde geändert vor 2 Monate, 4 Wochen von Bego Mario Garde. Grund: Code-Formatierung eingefügt
Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Wahrscheinlich hast du das Snippet nicht aktiviert, vielleicht liegt es aber auch an den Leerschritten nach der öffnenden Klammer.

    Wieso arbeitest du denn überhaupt noch mit Shortcodes, wenn du das eh neu aufsetzen musst? Du kannst mit Block-Lab doch gleich einen Block mit Formularfeldern für Text und Nummer (um bei deinem Beispiel zu bleiben) aufsetzen. Das geht mit der Dokumentation des Plugins recht flott.

    Wenn du beim Shortcode bleibst, solltest du die Shortcode-Parameter escapen. Sonst würde [snippet_piwigo text=“<script>alert(‚Du bist gehackt worden!‘)</script>“ nr=7] und weniger harmlose Beispiele funktionieren.

    function piwigo($atts) {
    	$atts = shortcode_atts( array(
    	  'text' => 'Vorgabewert',
    	  'nr' => 42,
    	), $atts );
            
    	$out = '<p>Was-auch-immer ' . esc_html( $atts['text'] ) . ' Hausnummer ' . esc_html( $atts['nr'] ) . '</p>';
    
    	return $out;
    };
    add_shortcode( 'snippet_piwigo','piwigo' );
    • Diese Antwort wurde geändert vor 2 Monate, 4 Wochen von Bego Mario Garde. Grund: Syntax-Fehler behoben

    Schön, dich wieder zu lesen, das mit dem escapen würde ich normalerweise machen. Du siehst, ich fange mit den snippets wieder ganz von vorne an.

    Aber wie kann ich es denn aktivieren??? Ich dachte, es ist aktiv …

    Anden Leerzeichen liegt es nicht

    • Diese Antwort wurde geändert vor 2 Monate, 4 Wochen von sonoptikon.

    Screenshot Snippet Shortcode

    Hab gerade nochmal geschaut: Shortcodes mit einem Leerschritt hinter der ersten Klammer werden nicht ausgeführt.

    [snippet_piwigo text="bla" nr=18] klappt,
    [ snippet_piwigo text="bla" nr=18 ] klappt nicht.

    Das mit dem Aktivieren ist mir entgangen.

    Nun habe ich sowas:

    function piwigo($args) {
    $text=$args[text];
    $nr=$args[nr];

    Mit dem Ergebnis:
    Warning: Use of undefined constant text – assumed ‚text‘ (this will throw an Error in a future version of PHP) in /homepages/1/d423279651/htdocs/clickandbuilds/akkordeonmnster/wp-content/plugins/code-snippets/php/snippet-ops.php(361) : eval()’d code on line 2

    Warning: Illegal string offset ‚text‘ in /homepages/1/d423279651/htdocs/clickandbuilds/akkordeonmnster/wp-content/plugins/code-snippets/php/snippet-ops.php(361) : eval()’d code on line 2

    Warning: Use of undefined constant nr – assumed ’nr‘ (this will throw an Error in a future version of PHP) in /homepages/1/d423279651/htdocs/clickandbuilds/akkordeonmnster/wp-content/plugins/code-snippets/php/snippet-ops.php(361) : eval()’d code on line 3

    Warning: Illegal string offset ’nr‘ in /homepages/1/d423279651/htdocs/clickandbuilds/akkordeonmnster/wp-content/plugins/code-snippets/php/snippet-ops.php(361) : eval()’d code on line 3

    habs schon: $args['text']

    Erinnerung kommt.
    Danke für die moralische und sachliche Unterstützung

    Moderationshinweis: wenn du dann Code in deinen Foren-Beiträgen noch entsprechend fromatieren könntest … 😉

    Das war auch nicht mein Code. ¯\_(ツ)_/¯

    Wenn schon, dann

    $text = $args[ 'text' ];

    mit dem Index in Hochkomma.

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)