If Schleife bei Optionsfeld

  • Hallo,
    ich meinem Theme kann ich in den Optionen diverse URLs mit Bannern hinterlegen.
    Diese werden mir dann in der Sidebar angezeigt.
    Nun ist es aber so, daß diese URLs ständig wechseln und teilweise leer bleiben. In meiner Sidebar werden so lauter leere Kästchen angezeigt.
    Also habe ich mir gedacht ich schreibe eine If-Schleife, die dann nur den Banner mit dem Link anzeigt, wenn auch in den Theme-Options eine URL hinterlegt wurde.

    Aber irgendwie läuft das was schief;
    es zeigt mir nun gar keine Banner mehr an

    Kann mir jemand erklären, was ich falsch gemacht habe?

    • 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

  • Kann mir da niemand weiterhelfen?
    Wie lautet die richtige if-Anweisung?
    Ich möchte die <li>-Folge nur dann anzeigen lassen, wenn in den optionen das feld [COLOR=#000000][COLOR=#DD0000]"tiar_banner2" [/COLOR][/COLOR]
    ausgefüllt wurde

  • PHP
    <?php if(get_post_meta($post->ID, 'tiar_url2', true)) : ?>
    <li>
    <?php 
     
        $ban2 = get_option('tiar_banner2'); 
        $url2 = get_option('tiar_url2'); 
        $lab2 = get_option('tiar_lab2');     
        $alt2 = get_option('tiar_alt2');
    ?>


    Wie eine alternative Syntax für ein if-Statement sieht das nicht aus. Gut, in WP wird diese Syntax häufig benutzt, finde ich nur unübersichtlich, da es so eigentlich schon eher hinkommt:

    PHP
    if (Frage/Bedingung für False oder True) ? Anweisung 1 : alternative Anweisung 2;

    Und wenn Du Dir nicht sicher bist, dann schreib einfach normales PHP:

    Einmal editiert, zuletzt von Melewo (18. Oktober 2013 um 20:00)

  • Mal unabhängig von der Schreibweise, was ist der Rückgabewert von [COLOR=#000000][COLOR=#0000BB]get_post_meta[/COLOR][/COLOR]?

    PHP
    <?php if (get_post_meta($post->ID, 'tiar_url2', true)) : ?>


    Mit true ein String und ohne true ein Array, falls ich es richtig verstehe.
    Somit sollte sich get_post_meta erst einmal mit print_r kontrollieren lassen, was da überhaupt enthalten ist.

    PHP
    print_r(get_post_meta($post->ID, 'tiar_url2'));


    Ist da was verwertbares enthalten, was Du dann in einem Statement auf true oder false prüfen kannst?

    Jedenfall würde ich da Schrittweise vorgehen, etwas sollte ja immer enthalten sein. Ob es gerade das Gewünschte ist und nicht nur ein leerer String, ist eine andere Frage. Der ließe sich auch so überprüfen:

    PHP
    <?php 
    $tiar_url2 = get_post_meta($post->ID, "tiar_url2", true);
    
    
    if (!empty($tiar_url2)) {
        echo $tiar_url2;
    } else {
        echo "Nichts";
    }
    ?>

    Einmal editiert, zuletzt von Melewo (18. Oktober 2013 um 21:00)

  • Habe ein wenig experimentiert, nur um die Funktion zu testen. Liefert nicht ein Array, sondern ein mehrdimensionales Array. Dahingehend müsste gegebenenfalls die Abfrage und Ausgabe angepasst werden. Doch zuvor müsstest Du erst einmal mit print_r oder womit auch immer feststellen, was enthalten ist.

    PHP
    <?php print_r(get_post_meta($post->ID)); ?>

    Nur mal als Beispiel:

    Liefert immer false, da Notice: Undefined index: tiar_url2 in ... :

    PHP
    <?php if ($option["tiar_url2"]): ?>
    
    
    <p>Gebe HTML aus wenn True</p>
    <?php else: ?>
    <p>Gebe HTML aus wenn False</p>
    <?php endif ?>


    Liefert true wenn Wert vorhanden:

    PHP
    <?php if ($option["optionen"]["tiar_url2"]): ?>
    
    
    <p>Gebe HTML aus wenn True</p>
    <?php else: ?>
    <p>Gebe HTML aus wenn False</p>
    <?php endif ?>

Jetzt mitmachen!

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