Suche
  • kre8tiv - benjamin jopen
  • Politik. Kampagnen. Kommunikation.
Suche Menü

WordPress: Benutzerdefinierte Felder ausgeben

Vorab

In der Regel sitze ich ja den Tag über am Rechner und baue an irgendwelchen Websites rum. Überwiegend auf TYPO3-Basis, zuletzt gibt es aber eine horrende Häufung an WordPress-Projekten. Da kommt es dann permanent vor, dass ich irgendeine Funktion/ein Verhalten erreichen will und dafür eine Lösung finde(n muss). Das ist mal aufwendig, öfter aber auch ganz simpel.

Wenn man aber mit mehreren System arbeitet und permanent vor neuen Aufgaben steht, kann es passieren, dass man schon einmal vergisst, wie man Problem X oder Y eigentlich gelöst hatte. Zumindest geht mir das so. Da muss man dann wieder ein altes Template rauskramen oder den alten Setup-Code suchen und nochmal nachschauen. Ich will dieses Blog aber auch als kleine Gedankenstütze für mich selbst nutzen und werde jetzt immer wieder solche Anforderungen mit der entsprechenden Lösung posten. Nur damit es Euch nicht so überrascht.

Benutzerdefinierte Felder in WordPress ausgeben

Dieses Szenario gehört sicherlich zu den sehr einfach zu lösenden. In WordPress gibt es die Funktion, an einen Beitrag oder eine Seite „benutzerdefinierte Felder“ anzufügen. Der Inhalt kann ganz verschieden sein, in meinem Fall soll dort etwas simpler  HTML-Code (Aufzählungen) rein, der auf Seiten mit speziellem Template ausgegeben wird.

Im Template der Seite muss dann einfach der folgende Code eingefügt werden:

$meta_values = get_post_meta($post-ID,'themenintro',true);
 echo $meta_values;

Und das wars schon. In meinem Beispiel heisst das Userfeld „themenintro„, was ihr dann entsprechend ersetzen müsst. Sehr simpel, aber das sagte ich ja bereits ;)

Und so sieht das komplette Template dann bei mir aus:

6 Kommentare Schreibe einen Kommentar

  1. Das ist netter Trick.. ich bis jetzt immer auf Felder verzichten und eher Plugins geschrieben aber das wesentlich einfacher ;)

    Antworten

  2. Einen einfachen Text nun auszugeben hab ich geschafft. Ich würde aber gerne auf einer „Seite“ alle Artikel mit einem bestimmten Kriterium ausgeben. Sprich, wenn der Wert auf ja ist, soll der jeweilige Artikel auf der speziellen Seite ausgegeben werden. Bei nein eben nicht. Kann mir da einer einen Rat geben? Vielen Dank und viele Grüße Falko

    Antworten

  3. Hallo,
    ich habe mir gerade mal deine Seite angeschaut und finde gerade diesen Beitrag nützlich.

    Ein kleiner Gedankengang den ich gerade hatte(kommt nicht oft vor ;-)) wäre deine Funktion
    $meta_values = get_post_meta($post-ID,’themenintro‘,true);

    in die funktions.php deines templates zu schreiben so braucvhst quasi nur den Befehl
    des auslesens in deinem Template zu verbauen.

    eventuel müßte dafür der code minimal umgeschrieben werden aber ich denke das sollte drinne sein. :-)

    Aber danke für deine Veröffentlichung

    Gruß Sven

    Antworten

  4. Falls man als Non-PHPler in die Funktionen von WordPress und sein Design eingreifen will, kann das schwierig werden. Dennoch gibt es genügend Tutorials, die einem das erleichtern.
    Ich werde wohl in Kürze auch eines schreiben!

    Den PHP-Code bekommen? Das geht ganz leicht über einen Texteditor, wie ihn jedes Betriebssystem mit sich bringt. Einfach den Editor öffnen, dann Ctrl.+O und die Dateien im Grundverzeichnis von wordpress holen.

    Antworten

  5. Pingback: Links ZweiNull #3 » Bilder, Tools, IP-Adressen, Website, Feed, Felder » Generation ZweiNull

  6. An Themes bastle ich in Ermangelung von PHP-Kenntnissen und weil das nicht mein Hauptgeschäftsfeld ist möglichst wenig herum, hole mir aber gerne Anregungen. Das Schwierigste für Normal-WPler ist wohl, den PHP-Code irgendwo zu bekommen. Woher weiß ich, welcher Code es sein muss? (Ist diese Frage jetzt sehr doof?)
    Für meine Presseseite benutze ich ein Theme, das ein solches ben.def. Feld schon mitbringt, prima. Hier erscheint ein Bild im Entry, wenn ich im Feld „Image“ und bei Wert die URL des Bildes eintrage.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.