wie benutzerdefinierte Felder nur einlesen wenn Wert vorhanden?

  • Hallo,

    ich versuche mich zum ersten Mal an einem Seitentemplate, welches benutzerdefinierte Felder ausgeben soll. Klappt soweit auch schon ganz gut. Nur wie kann man es umsetzen, das ein Feld nur eingelesen wird, wenn dieses auch einen Inhalt hat?
    Vielleicht mal am Beispiel:
    Das Template listet die Titel der Beiträge auf (klappt) und darunter sollen die benutzerdef. Felder in einer Tabellenzeile ausgegeben werden (klappt auch schon). Nur wird es immer wieder vorkommen, das nicht immer alle Felder in den Beiträgen gesetzt werden. Da habe ich jetzt das Problem, das dann eine Fehlermeldung ausgegeben wird.

    Wie bekomme ich das hin, das statt der Feldermeldung nix, bzw. ein Leerfeld ausgegeben wird?
    Der Code sieht bis jetzt so aus:

    Ach so, ja die Fehlermeldung bezieht sichauf die foreach-Schleifen, z.B.:

    Zitat

    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\wordpress\wp-content\themes\rrp_jst_23\liste_mitarbeiter.php on line 59

    • 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

  • Danke für die schnelle Reaktion.


    Ansonsten eben vor den foreach-Schleifen $mykey_values auf "null" oder empty() prüfen.

    Wie genau mache ich das? $mykey_values wird ja nie komplett leer sein.

    Sorry, aber bei php habe ich immer das Gefühl an die Grenzen meiner autodidaktischen Fähigkeiten zu stossen. :oops:

  • mmh, ich hab´s jetzt mal so probiert:

    Code
    if(empty($mykey_values[Email]))
            {      $mykey_values = get_post_custom_values('Email');
                foreach ( $mykey_values as $key => $value ) {
                   echo " <a href=\"mailto:$value\">$value</a> <br />"; } }
        else
            {echo "keine Email ";}?>

    Ergebnis, fehlermeldung wie bisher

    und einmal so:

    Code
    if($mykey_values[Email] != null)
            {      $mykey_values = get_post_custom_values('Email');
                foreach ( $mykey_values as $key => $value ) {
                   echo " <a href=\"mailto:$value\">$value</a> <br />"; } }
        else
            {echo "keine Email ";}?>

    Ergebnis: "keine Email" steht bei allen Beiträgen, aus bei denen für Email ein Wert vorhanden ist.

  • Nee, so meinte ich:

    PHP
    <td class="tab">
         <?php $mykey_values = get_post_custom_values('Email');
              [COLOR="Red"]if ( !empty($mykey_values)  ) {[/COLOR]
                foreach ( $mykey_values as $key => $value ) {
                   echo " <a href=\"mailto:$value\">$value</a> <br />";
                }
              [COLOR="#ff0000"][B]}[/B][/COLOR] ?>
     </td>


    Du kannst doch nicht was abprüfen, was du dir noch gar nicht geholt hast. ;-)

  • Jetzt habe ich doch nochmal eine Frage:

    mit the_category(); kann ich die aktuelle Kategorie ausgeben lassen.

    Wie gehe ich aber vor, wenn ich diese nicht ausgeben will, sondern nur in eine Variable abspeichern? Also ungefähr so:

    Code
    $catego1=the_category();

    So wird bei mir die Variable trotzdem ausgegeben.

  • :evil: grmblmpf
    irgendwie bekomme ich das nicht hin, was ich will. Vielleicht kann mir ja nochmal jemand (bzw. Du marX :-D) weiterhelfen?

    Im Moment listet mein Template die Beiträge wie folgt auf:

    Kategoriename 1
    Beitrag
    Kategoriename 1
    Beitrag
    Kategoriename 2
    Beitrag

    usw.
    Ich hätte es aber gerne so:

    Kategoriename 1
    Beitrag
    Beitrag
    Kategoriename 2
    Beitrag

    usw.
    Also jeden Kategorienamen nur einmal. Ich hatte mir dazu folgendes überlegt (bzw. vom Prinzip natürlich woanders abgeschaut ;-) ):

    PHP
    <?php query_posts("cat=$bue_cat_ids&orderby=category&order=ASC&posts_per_page=-1"); 
        while (have_posts()) : the_post(); ?>
            <div class="" id="post-<?php the_ID(); ?>">
    <?php
    if($catego2 != get_the_category('','single'))
        {the_category(' > ','multiple');}
    $catego2= get_the_category('','single');
    ?>
    //hier folgt die Ausgabe des Artikels

    Also vom Prinzip, die Artikel werden nach der Kategorie sortiert geholt, dann soll die Kategorie-ID des letzten Titels (gespeichert in $catego2) mit der des aktuellen Titel verglichen werden. Sind sie nicht gleich (sprich es kommen die Artikel der nächsten Kategorie), soll mit the_category(' > ','multiple'); die Kategorie ausgegeben werden und sonst eben nicht.

    Das ganze funkt aber nicht. Die Kategorie wird immer noch vor jedem Artikel ausgegeben, obwohl die Kategorie-ID doch eigentlich die Selbe sein müsste und damit die Ausgabe im if übersprungen werden müsste.

    Denke ich zu kompliziert, oder warum funkt das nicht?
    Bzw. wie geht das sonst richtig?

  • Probiers mal so:

Jetzt mitmachen!

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