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

query_posts / nach meta_key sortieren

Dieses Thema im Forum "Design" wurde erstellt von PhilippD, 4. Januar 2010.

  1. PhilippD

    PhilippD New Member

    Registriert seit:
    31. Juli 2009
    Beiträge:
    4
    Zustimmungen:
    0
    Gelöst: query_posts / nach meta_key sortieren

    Hallo,

    ich sortiere meine Einträge nach einem custom field 'sortnr', welches lediglich eine Zahl zwischen 0 und 1000 beinhaltet.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Solange die Zahlen zweistellig sind, wird richtig sortiert. Kommt jedoch eine dreistellige Zahl hinzu, gibt es ein Problem.

    Beispiel:

    10
    150
    160
    170
    20
    30
    40
    50

    Werden von den Zahlen nur die ersten 2 Stellen beachtet? Kann nach dreistelligen Zahlen gar nicht sortiert werden?

    Wäre super, wenn mir jemand weiterhelfen könnte.

    LG
    Philipp
     
    #1 PhilippD, 4. Januar 2010
    Zuletzt bearbeitet: 4. Januar 2010
  2. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
    Die Sortierung ist logisch, da Text sortiert wird. Kannst das ja mal testen, in dem du 163 eingibst.
    Da es sich um Texte handelt gib die Werte so ein

    010
    020
    100
    ...
     
  3. PhilippD

    PhilippD New Member

    Registriert seit:
    31. Juli 2009
    Beiträge:
    4
    Zustimmungen:
    0
    Danke für deine Antwort! Wie du schon gesagt hast, werden Werte ab 99 als String behandelt - das war mir neu.

    Habe noch ein bisschen im englischen Forum geforscht und eine weitere Lösung gefunden. Man muss in wp-includes/query.php an der Position 2218 folgendes verändern:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    'meta_value+0' zwingt MySQL, die größeren Werte als Integer zu behandeln - funktioniert wunderbar. :)
     
  4. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
    Nicht erst ab 99. Das Gleiche wird dir passieren mit

    aus 2, 10 wird 10, 2

    Eine Änderung würde ich in der Datei wp-includes/query.php nicht machen. Beim nächsten WP-Update ist die Änderung weg, es sei denn, du wiederholst die Änderung dann wieder in der neuen Datei. Wie gesagt, ich rate davon ab Programmdateien zu verändern. Es wird mit der Zeit unübersichtlich und zeitaufwändig. Aber das muss jeder selbst wissen.
     
  5. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Super sache leute, gute arbeit! genau das suche ich.

    ich benutzte allerdings das costum_field nicht um meine Beiträge zu sortieren, sondern um bestimmte Artikel zu unterscheiden.

    diese haben z.b. Postleitzahlen, also immer 5 stellen.
    ich habe es probiert, aber ich kann keine mehrere meta_value eintragen:

    beispiel:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ich möchte also alle posts anzeigen die im costum_field folgende PLZ haben: 22045,22046,22047,22048

    ... das geht aber natürlich nicht so leicht, das habe ich gemerkt und auch nicht wenn ich die PLZ mit kommer trenne!

    geht das den überhaupt!??
     
  6. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
    Ich habe mal ähnliches gemacht.
    mit query_posts lese ich alle aus, die einen meta_key haben und sortiere danach.
    Die Ausgabe wird dann mit einer if-Abfrage gefiltert.
     
  7. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    danke für die Sehr schnelle und gute Antwort, damit habe ich nun nicht gerechnet!

    mit einer if schleiffe hätte ich es auch gerade gemacht, aber dachte das ich es auch schon beim auslesen erreichen kann. aber mit If geht das natürlich auch gut
     
  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