1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Custom Fields VS. Sidebar

Dieses Thema im Forum "Design" wurde erstellt von Maiskolben, 7. Mai 2010.

  1. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Guten Abend,
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wie kann ich prüfen, ob Custom Fields für meinen Post gesetzt sind? Verstehe ich das richtig, dass die Templatetags nur Ausgabefunktionen sind, bei denen ich nur prüfen kann, ob sie leer oder nicht leer sind??

    Viele Grüße,

    Maiskolben

    PS: ich versuche auf der single.php custom fields 'nichtdynamisch' in der sidebar anzeigen zu lassen und alles dynamische auszublenden. Wenn der User jetzt nicht mehr im Post surft, sondern bspw. auf der Startseite, dann soll wieder nur die dynamische Sidebar angezeigt werden...
     
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Worum genau geht es Dir denn jetzt? Die Unterscheidung von Einzelansicht und allen anderen Ansichten machst Du einfach mit is_single(). Oder geht es darum, dass an manchen Postings das fed zwar gesetzt, aber leer ist? Mit get_post_meta($post->ID, '12345', false) kriegst Du das als Array zurück. Ich würde erwarten, dass das dann leer oder null ist, wenn das Feld gar nicht vorhanden ist. Ansonsten enthaält es einen leeren String. Wenn es darum geht, ob ein Wert gesetzt ist, prüfe den Rückgabewert vor dem echo doch einfach mit empty.
     
  3. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Hallo Ammaletu,

    ich würd' einfach gern wissen wollen, ob ich prüfen kann, ob eines oder mehrere Custom Fields in einem Beitrag gesetzt sind. Und wenn keine CF gesetzt sind (keine Keys und keine Values), dann soll die dynamische Sidebar angezeigt werden, wenn ja, dann keine Sidebar...

    Ich weiß nur nicht wie ich die Abfrage machen soll.
    Wenn (alle!) Custom Fields leer, dann zeige Sidebar, sonst, zeige Custom Fields. Ich werd' noch zum Custom Field so oft wie ich das jetzt schon geschrieben habe.

    is_single() kann ich hier nicht gebrauchen, da die ganze Abfrage in dem single.php Template stattfindet...

    Vielen Dank für die Rückmeldung,

    Maiskolben
     
  4. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Schau mal hier: http://codex.wordpress.org/Function_Reference/get_post_custom_keys

    Also dann wohl so:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das prüft ab, ob irgendein Custom Field dranhängt. Wenn Du auch testen willst, ob die Felder Werte gesetzt haben, müsstest Du Dir rund um get_post_custom eine kleine Funktion schreiben, die durchgeht und true zurückgibt, sobald der erste nicht-leere Feldwert gefunden wurde. Siehe: http://codex.wordpress.org/Function_Reference/get_post_custom
     
    #4 Ammaletu, 7. Mai 2010
    Zuletzt bearbeitet: 7. Mai 2010
  5. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Mhhh... das habe ich auch schon ausprobiert, hab mich ja vorher schlau jemacht. Aaaaber: es nützt nichts. die dynSidebar wird in einem Post mit Attachtment nicht angezeigt (wies sein soll), aber dafür auch nicht in einem Post ohne Attachment - und ebenso anders herum... Ich weiß nicht weiter. Warum kann man nicht die globale Abfrage stellen, ob ein Post Custom Keys hat? Grrr..

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    PS:::

    Da mir get_post_custom_keys($post->ID) ein Array zurückgibt, habe ich erfolglos versucht, dieses Array in einen String zu konvertieren (implode()) und den dann zu prüfen, ob er leer ist... FacK! Blank Site...
     
    #5 Maiskolben, 7. Mai 2010
    Zuletzt bearbeitet: 7. Mai 2010
  6. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Das liegt jetzt aber nicht an einem Klammerfehler, oder?!
     
  7. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    :) Ne, die Klammern habe ich nicht vergessen...
    Ich habe es jetzt ziemlich unelegant gelöst, in Ermangelung eines Templatetags. Sag' gern Deine Meinung, vllt hast Du ja noch einen besseren Vorschlag?

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich zerhaue das Array (get_post_custom_keys()) erst und werfe die zwei Keys raus die übrigbleiben, wenn keine Werte durch die Custom Fields übergeben werden, und dann füge ich alles zu einem String zusammen, um bei gesetzten CF Werten überprüfen zu können, dass der verkackte String NICHT leer ist.. Bitte?

    Ich will nur zum Bäcker nebenan, aber fahre mit der Bahn nach München und hole mir da Brötchen! :))

    Vielleicht hast Du (oder irgendwer anders) ja noch eine Idee zu dem leidlichen Thema?

    Maiskolben
     
  8. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Ich sehe keinen Fehler, aber wenn dann die Seite ganz weiß bleibt, steckt irgendwo noch einer. Der sollte aber wahlweise am Bildschirm ausgegeben oder in eine Datei geloggt werden.


    Was meinst Du damit? Fügt noch irgendwer anderes Custom Fields hinzu?!
     
  9. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Hallo Ammaletu,

    nein, es fügt niemand andere Fields hinzu. Sieh':

    get_post_custom_keys($post->ID) gibt mir ein Array zurück.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Sogar wenn keine Custom Fields mit einem Post eingebunden sind, bleiben key 2-4.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und manchmal fehlt der Key 4 (_mini_post), aus welchen Gründen auch immer.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Auf jeden Fall sind die Indexes des Arrays immer unsortiert.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das ist der Grund, dass mein oben beschriebener Code nicht funktioniert.
    Wenn Du eine Idee hast wie ich prüfen kann, ob Custom Fields gesetzt sind, dann würde ich mich freuen. Vielleicht gibt es ja noch ein verstecktes Template Tag irgendwo?


    Maiskolben
     
  10. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Ah, WP gibt da doch die eigenen internen Keys mit zurück. Keys, die mit "_" beginnen, werden in der Oberfläche nicht angezeigt, tauchen hier aber wohl mit auf.

    Ich glaube, am besten schreibst Du da selber eine kleine Funktion has_custom_field, die das abprüft. Dann kannst Du das auch an verschiedenen Stellen nutzen. Du musst halt über das Array noch iterieren und Keys mit "_" ausschließen. Siehe das Code-Beispiel hier:
    http://codex.wordpress.org/Function_Reference/get_post_custom_keys
     
  11. Maiskolben

    Maiskolben Well-Known Member

    Registriert seit:
    23. Februar 2010
    Beiträge:
    63
    Zustimmungen:
    0
    Hey Ammaletu!

    Das ist genau das wonach ich gesucht habe! Jetzt kann ich beide Varianten umsetzen...

    Vielen Dank! :)

    Grüße Maiskolben


    PS: Für alle die sich auch damit rumschlagen, wäre noch ein zweiter Gedanke interessant: Anstatt, dass jedes Feld einen anderen Key bekommt (für mich war das ja nur logisch alle entsprechend ihren Inhalten zu benennen: header, cssstyle, vollerbeitrag etc.), haben alle Custom Fields einen gemeinsamen Key (bspw. Sidebar). Siehe dieser kleine Codeschnipsel hier:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Der gibt dann unabhängig des Keynamens alle Felder in Reihenfolge der Eintragung aus... Ist vllt. auch ganz nett, wenn man in der Reihenfolge der Felder flexibel sein möchte.

    Reingehaun..
     
    #11 Maiskolben, 10. Mai 2010
    Zuletzt bearbeitet: 10. Mai 2010
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden