do_shortcode in array

  • Hallo,

    ich hätte mal eine Frage, wie ich einen PHP Code anpassen müsste. Ich nutze ein Child Theme und habe darin eine Funktion, die bestimmte Tag Seiten in umgekehrter Reihenfolge ausgibt.

    Aktuell sieht er so aus:

    Zitat

    <?php if ( is_tag( array( 49, 3821, 294, 524, 923, 1179, 1521 ) ) ) { ?>

    <?php global $query_string; query_posts($query_string . "&order=ASC"); ?>

    <?php }?>

    Das funktioniert bisher auch so.

    Jetzt möchte ich die Zahlen mit einem Shortcode ersetzen, dass ich bei neuen Kategorien nicht jedesmal mein Child Theme bearbeiten und neu hochladen muss, sondern dass in meinem Shortcode Plugin eintragen kann. Also der Code müsste von der Idee her in etwa so sein:

    Zitat

    <?php if ( is_tag( array( echo do_shortcode('[sc name="zahlen"]') ) ) ) { ?>

    <?php global $query_string; query_posts($query_string . "&order=ASC"); ?>

    <?php }?>

    Hierfür fehlt mir aber die richtige Syntax, wie ich den Shortcode richtig einbinde. Auch wenn der Code generell verbessert werden könnte, bin ich für Tipps dankbar.

    Kann mir da jemand helfen?

    Viele Grüße & Danke
    Michael

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Im PHP Code würde man Shortcode nur einbauen wenn er zufällig schon fertig wäre, ansich ist der Shortcode für Content gedacht, in deinem Fall würde wahresheinlich eine Funktion dafür ausreichen. in der du deinen Zahlen übergibst, wenn du weist wie du zu den Zahlen kommst.
    ansonsten https://developer.wordpress.org/reference/functions/do_shortcode/ aber diese beschreibung wirst du sicher schon kennen.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Danke für Deine Antwort.
    Der Shortcode ist ja schon fertig bzw. verfügbar. Ich habe auch an anderer Stelle in dem Child Theme Template einen Shortcode mit echo do_shortcode ausgegeben. Das Problem ist die Syntax des PHP Codes. Die stimmt so nicht. Wie müsste die denn sein?

  • wieso baust du echo ein? willst ja keine Ausgabe im Browser sondern werte übergeben, developer Link zu do shortcode doch lesen!

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • wieso baust du echo ein? willst ja keine Ausgabe im Browser sondern werte übergeben

    Ja, das stimmt. Aber auch ohne das echo klappt es so nicht. Da hilft mir auch der Developer Link nicht weiter. Ich bin kein PHP Spezialist, sonst würde ich ja nicht um Hilfe fragen :)

  • und ich leider kein Hellseher, wie deine Shortcode Funktionen funktionieren könnten, was diese Retour gibt.

    Um bei PHP Code Unterstützung zu suchen, müsstest du in der Jobbörse fragen.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • PHP
    <?php if ( is_tag( array( echo do_shortcode('[sc name="zahlen"]') ) ) ) { ?>
    
    
    <?php global $query_string; query_posts($query_string . "&order=ASC"); ?>
    
    
    <?php }?>

    man öffnet nur 1x PHP und schließt 1 x php

    ^- jetzt ist der Schrott lesbar

    PHP
    global $query_string;
    
    
    $aNumbers = array();
    $aNumbers = do_shortcode('[sc name="zahlen"]'); // grusel[/B]
    
    
    if ( is_tag( array( $aNumbers ) ) ) {


    is_tag und Arrays? sicher?

    Mit offenen Augen träumen

  • Zitat

    <?php if ( is_tag( [COLOR=#ff0000]array( [/COLOR][COLOR=#ff0000]echo[/COLOR] do_shortcode('[sc name="zahlen"]') [COLOR=#ff0000] )[/COLOR] ) ) { ?>


    Falls der Shortcode ein Array von Zahlen zurückgibt, entferne das rot markierte, dann sollte es klappen.

    Da ein WordPress Shortcode aber generell einen String zurückgibt, brauchst Du einen kleinen Workaround, um das Array in einen String zu verpacken und umgekehrt:

    Ergänzung: In etwa sowas in der Art im Shortcode:

    PHP
    $zahlen = array( 1, 2, 3 );
        return implode( ',', $zahlen );


    Und sowas in der Art, um den String dann wieder zum Array zu machen:

    PHP
    <?php if ( is_tag( explode( ',', do_shortcode('[sc name="zahlen"]') ) ) ) { ?>

    7 Mal editiert, zuletzt von b3317133 (20. Dezember 2020 um 18:08)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!