Benutzerdefiniertes Feld ausgeben

  • Hallo,

    ich möchte ein benutzerdefiniertes Feld als Dachzeile ausgeben und komme einfach nicht weiter: mit

    PHP
    <?php the_meta(); ?>

    werden beide Angaben – Name und Wert – ausgegeben; Benötigt wird nur ein Wert! WP schreibt zusätzlich noch einen unerwünschten Doppelpunkt hinter das Feld "Name".

    Ich habe ferner noch mit

    PHP
    get_post_meta($post_id, $key, $single);

    aus den Codex-Seiten experimentiert, komme hier aber kein bisschen weiter.

    Die gewünschte Dachzeile soll die Rubrik über der Überschrift ausgeben. Beispiel: Kultur, Politik. Sie soll unabhängig von der Kategorie sein.
    Evt. wäre auch das erste Schlagwort sinnig, doch da habe ich keine passende Funktion gefunden.

    Lange Rede, kurzer Sinn: Kann jemand netterweise helfen?
    (Ich bin PHP-Anfänger - von daher bitte fehlende Grundlagen bei der Antwort berücksichtigen - danke.)

    Viele Grüße
    Radulph

    • 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

  • Das müsste so aussehen:

    [code=php][COLOR=#000000][COLOR=#0000BB]<?php print get_post_meta[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$post->ID[/COLOR][COLOR=#007700], 'custom-field-key'[/COLOR][COLOR=#0000BB][/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]true[/COLOR][COLOR=#007700]); ?>[[/COLOR][/COLOR]/PHP]

    Das ganze muss innerhalb des Loops (if have_posts ... while have_posts), damit die $post->ID auch gesetzt ist. Den Key-Namen musst Du natürlich ersetzen.

    Eine Lösung über Tags würde ich allerdings auch besser finden, da ich persönlich die Eingabe der Custom Felder etwas nervig finde verglichen mit dem Zuweisen eines Tags.

    PHP
    <?php $posttags = get_the_tags(); if ($posttags && (count($posttags) > 0)) {
      $tag = $posttags[0];
      print '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a>'; } ?>

    Genauso wieder in den Loop. Der erste Tag wird verlinkt ausgegeben.

    Achtung: Wenn Du mehrere Tags zuweisen willst, teste vorher genau, ob das Probleme mit der Sortierung gibt. Ich bin gerade nicht sicher, wonach die sortiert trauskommen. Wenn es alphabetisch ist, kannst Du ja nicht wirklich festlegen, dass ein bestimmter Tag dort ausgegeben werden soll. In dem Fall wäre es vermutlich besser, eine Custom Taxonomy dafür anzulegen (so dass Du getrennt eine Kategorie, x Tags sowie einen Dachzeilen-Tag zuweisen kannst).


  • Eine Lösung über Tags würde ich allerdings auch besser finden, da ich persönlich die Eingabe der Custom Felder etwas nervig finde verglichen mit dem Zuweisen eines Tags.

    PHP
    <?php $posttags = get_the_tags(); if ($posttags && (count($posttags) > 0)) {
      $tag = $posttags[0];
      print '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a>'; } ?>

    Hallo,

    erst einmal herzlichsten Dank für Deine Lösung. Das sieht schon nach einer fortgeschrittenen Technik aus.
    Klar bevorzuge ich die Tag-Lösung, indes habe ich Deinen Code auf der Home-Seite (Loop) und auf der Single-Page eingesetzt, und es wird nichts angezeigt. Hast Du eine Ahnung warum?
    Sinnig wäre es nur den erstgenannten Tag auszugeben.

    Viele Grüße
    Radulph

  • Das müsste so aussehen:

    [code=php][COLOR=#000000][COLOR=#0000BB]<?php print get_post_meta[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$post->ID[/COLOR][COLOR=#007700], 'custom-field-key'[/COLOR][COLOR=#0000BB][/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]true[/COLOR][COLOR=#007700]); ?>[[/COLOR][/COLOR]/PHP]

    Das ganze muss innerhalb des Loops (if have_posts ... while have_posts), damit die $post->ID auch gesetzt ist. Den Key-Namen musst Du natürlich ersetzen.

    Wenn ich den Key-Namen verwende, möchte ich natürlich, dass dieser z.B. als Wert ausgelesen wird.
    Mit Deiner Lösung muss ich einen im Template definierten Namen verwenden. Aber genau dieser soll ja ausgelesen werden, um diesen beim jeweiligen Artikel flexibel bestimmen zu können. Jetzt sieht es derzeit mit Deiner Lösung so aus:

    PHP
    <?php print get_post_meta($post->ID, '[COLOR="Red"]Netzkultur[/COLOR]', true); ?>


    Das Wort Netzkultur müsste ausgelesen werden.

    Aber wie gesagt: die Tag-Lösung fände ich auch besser.

    Viele Grüße
    Radulph

  • Zitat

    Klar bevorzuge ich die Tag-Lösung, indes habe ich Deinen Code auf der Home-Seite (Loop) und auf der Single-Page eingesetzt, und es wird nichts angezeigt. Hast Du eine Ahnung warum?

    So auf Anhieb nicht, nein. das sollte doch aber mit ein paar Log-Ausgaben darin herauszukriegen sein, woran es hakt. Flüchtigkeitsfehler passieren ja immer mal, ich sehe den Grund aber gerade nicht.


    Zitat

    Sinnig wäre es nur den erstgenannten Tag auszugeben.

    Wie gesagt, da musst Du mal experimentieren, ob das funktioniert.


    Zitat

    Wenn ich den Key-Namen verwende, möchte ich natürlich, dass dieser z.B. als Wert ausgelesen wird.

    Wird er doch auch. Du nimmst einen Key wie "Ressort" und hängst unter diesem Key an alle Beiträge einen Wert ("Politik", "Urlaub"...). Dann kannst Du den Ressort-Namen mit dem Key "Ressort" wieder auslesen. Das, was Du auslesen willst, in die get_post_meta-Funktion reinzureichen klappt natürlich nicht. Ich bin auch nicht sicher, wie Du darauf kommst?!


  • Wird er doch auch. Du nimmst einen Key wie "Ressort" und hängst unter diesem Key an alle Beiträge einen Wert ("Politik", "Urlaub"...). Dann kannst Du den Ressort-Namen mit dem Key "Ressort" wieder auslesen.

    Ich hatte eine Kleinigkeit übersehen. Das klappt hervorragend, indem ich 'dachzeile' definiere. Da dies aber die Autoren sicher nicht nachvollziehen werden, ist Deine zweite Lösung natürlich vorzuziehen:

    Warum indes Deine Tag-Lösung nicht funktioniert, bekomme ich auch durch ausprobieren und wälzen der Codex-Seiten nicht gelöst; das ist für mich schon höheres Wordpress-Coding. Mir scheint es, als ob die Zeile mit "print" nichts ausgeben will.
    Ich kann nur raten: Kann es sein, dass in der functions.php etwas fehlt?


    Viele Grüße
    Radulph

    Einmal editiert, zuletzt von rakader (30. März 2012 um 08:09)

  • Wenn print nichts ausgibt, liegt es am if-Statement, würde ich sagen. Dann ist da vielleicht noch was falsch. Sich die Bestandteile des ifs z.B. als HTML-Kommentar in der Seite mal ausgeben zu lassen sollte aber einfach sein. Der Code steht innerhalb des Loops, richtig?

    Einmal editiert, zuletzt von Ammaletu (30. März 2012 um 10:40)

  • Richtig. Das Statement liegt wie alle anderen, die funktionieren, unter

    PHP
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    Ich habe das Print-Statement mehrfach gekürzt. Dann wird das Print-Statement selbst angezeigt. Aber wie einfangs gesagt: Ich bin blutiger Anfänger, d.h. ich komme mit einer einfachen Zeichenkette klar, muss aber bei verschränkten passen.

  • Leider kann ich die Antwort nicht editieren - will die Lösung aber nicht vorenthalten. Mit diesem Code funktioniert es, entnommen der Codex-Seite:


    Viele Grüße und allen Dank für die Hilfe,
    Radulph

Jetzt mitmachen!

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