Erweitern des $Post-Objekt mit eigenen Attributen

  • Moin,
    ich habe mir ein eigenes Template erstellt und meine "Ergebnistabelle" (2 JOIN'S , spezielle Sortierung und limitierung) um einige Attribute erweitert.

    Kurform:
    $pageposts = $wpdb->get_results($querystr, OBJECT);
    ....
    <?php foreach ($pageposts as $post): ?>
    <?php setup_postdata($post); ?>

    In dem Loop möchte ich jetzt meine eigenen Attribute in dem Post anzeigen.
    Ich habe bereits in post-template.php eigene Funktionen hinzugeügt und auch in query.php die setup_postdata um eine globale Variable $distance erweitert.
    Nun komme ich mit den standart Properties von $Post nicht mehr weiter...
    Mir fehlt im Grunde $post->distance...

    Nun meine Frage, ist es möglich das $Post-Objekt um weitere Properties zu erweitern?

    • 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

  • Danke für die Antworten soweit...
    Also noch mal ein paar Details.
    Ich speichere zu jedem Eintrag latitude und longitude als CutomFields.
    Um eine Umkreissuche zu realisieren (Posts aus meiner Umgebung) hab ich es als sinnvoll gesehen, die postmeta an entsprechenden Werten mit der posts zu "joinen"

    $querystr = "
    SELECT * ,
    3956 * 2 * ASIN(SQRT( POWER(SIN(($usersLatitude - abs( completeTable.latitude)) * pi()/180 / 2),2) + COS($usersLatitude * pi()/180 ) * COS(abs( completeTable.latitude) * pi()/180) * POWER(SIN(($usersLongitude - completeTable.longitude) * pi()/180 / 2), 2) ))
    AS distance
    FROM
    (
    SELECT *
    FROM llocoposts
    JOIN
    (
    SELECT meta_value AS latitude, post_id AS IDLat
    FROM llocopostmeta
    WHERE meta_key = 'cf_geolat'
    AS latitude ON llocoposts.ID = latitude.IDLat
    JOIN
    (
    SELECT meta_value AS longitude, post_id AS IDLong
    FROM llocopostmeta
    WHERE meta_key = 'cf_geolong'
    AS longitude ON llocoposts.ID = longitude.IDLong
    AS completeTable
    having distance < 5
    ORDER BY distance";


    print_r liefert ein korrektes Ergebnis... Allerdings komme ich bisher nicht an die "distance" -Werte heran

    Einmal editiert, zuletzt von octus83 (5. April 2013 um 15:12)

  • Da helfen keine Metafields... das is ne Umkreissuche und das Thema hatte ich jetzt selber... :D

    Das DB-Framework, welches Wordpress verwendet, hat Probleme mit den JOINS. Im konkreten Fall get_results().

    Was zahlste mir, wenn ich Dein Problem löse? :D Nur Spaß.

    Vergiss einfach mal die API und mach einen banalen mysql_query($sql). Im Anschluss kannste dann das Resultset in einer klassischen while-Schleife durchlaufen lassen (mysql_fetch_assoc).

    Weitere Infos: http://forum.wpde.org/plugins-und-wi…wpdb-query.html

  • Ich mache es jetzt ähnlich... etwas "dirty" vielleicht..aber läuft

    $pageposts = $wpdb->get_results($querystr, OBJECT);

    Loop per for-schleife und Zugriff auf die erforderlichen Werte

    per $pageposts[i]->distance

Jetzt mitmachen!

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