orderby custom_value

  • Ich habe mal wieder ein Problem. Ich habe mir custom-fields angelegt. Unter anderem auch eins, in welches ich ein Datum schreibe (z.B. 12.01.2013). Gibt es eine Möglichkeit die Ausgabe genau nach diesem Datum zu sortieren?

    Meine Abfrage sieht bisher so aus:

    PHP
    <?php query_posts(    
    array(
    'order'     => 'ASC',
    'meta_key' => 'AM',
    'orderby'   => 'meta_value_num', //or 'meta_value'
        )
    );
    ?>


    aber dann sortiert er natürlich nach den ersten beiden Zahlen des Datums. Kann ich das irgendwie ändern, ggf. über eine function?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

    • 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

  • Ich nutze das Plugin WP-Types nicht. Habe einfach unter einen Beitrag ein Custom-Field angelegt, wo vorne AM steht und hinten einen Text, der so aussieht: 12.01.2013.

    Müsste ich nicht irgendwie erstmal WP mitteilen, dass meta_value ein Datum ist und es dann aufschlüsseln lassen um danach zu sortieren?

    Dein Vorschlag habe ich so probiert:


    aber dann zeigt er nichts.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Mein query_post sieht jetzt so aus:

    PHP
    <?php query_posts(
        array(
        'order'     => 'asc',
        'meta_key' => 'AM',
        'orderby'   => '$unixTimestamp', //usually 'meta_value' or 'meta_value_num'
        )
    );
    ?>


    Die passende Abfrage dazu im Loop lautet:

    PHP
    <?php 
    $mykey_values = get_post_custom_values('AM');
    foreach ( $mykey_values as $key => $value ) {
      $data = $value;
      list($d, $m, $y) = explode('.', $data);
      $unixTimestamp = mktime(0, 0, 0, $m, $d, $y);
      date('Y-m-d H:i:s', $unixTimestamp);
    echo '<span class="date">'. $value .'</span>';
    ?>


    Problem dabei ist, dass der query_post vor dem Loop steht und dass orderby keine Variablen akzeptiert und außerdem die Variable erst unterhalb bestimmt wird. Die Ausgabe von $unixTimestamp würde sonst soweit stimmen.

    Hat noch jemand eine Idee?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Den Ansatz mit der Datenbank finde ich schon gut. Aber wie bekomme ich den UnixTimestamp in die Datenbank und wie würde ich ihn dann über query_posts abrufen können? Ich müsste den ja zum sortieren nehmen.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Hat noch jemand eine Idee, wie ich vorgehen könnte?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

Jetzt mitmachen!

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