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

Erweitern des $Post-Objekt mit eigenen Attributen

Dieses Thema im Forum "Konfiguration" wurde erstellt von octus83, 5. April 2013.

  1. octus83

    octus83 New Member

    Registriert seit:
    5. April 2013
    Beiträge:
    3
    Zustimmungen:
    0
    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?
     
  2. formateins

    formateins Gast

  3. Michi91

    Michi91 Well-Known Member

    Registriert seit:
    8. November 2008
    Beiträge:
    1.972
    Zustimmungen:
    42
  4. octus83

    octus83 New Member

    Registriert seit:
    5. April 2013
    Beiträge:
    3
    Zustimmungen:
    0
    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
     
    #4 octus83, 5. April 2013
    Zuletzt bearbeitet: 5. April 2013
  5. formateins

    formateins Gast

    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-widgets/113426-probleme-mit-wpdb-query.html
     
  6. octus83

    octus83 New Member

    Registriert seit:
    5. April 2013
    Beiträge:
    3
    Zustimmungen:
    0
    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->distance
     
  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