wp_query wird nicht bei Hauptdomain aufgerufen ?

  • Hallo.
    Derzeit arbeite ich wieder an meinem Statistikscript weiter und musste heute feststellen dass Aufrufe der Haupt-URL

    Code
    http://www.cywhale.de

    NICHT vom Script erkannt werden. Sobald ich einen Parameter irgendeiner Art an die URL anhänge funktioniert das logging, z.B. bei

    Code
    http://www.cywhale.de/Test

    .

    Habe zum Testen ein Miniplugin geschrieben dass sich wie das Statistikscript an parse_query als Hook hängt und die Aufrufe in eine Datei schreibt. Ausgabe:

    Code
    20:07:2007, 17:05 - Entered debug function. Called page is /bloginfo
    20:07:2007, 17:05 - Entered debug function. Called page is /links
    20:07:2007, 17:05 - Entered debug function. Called page is /kontakt
    20:07:2007, 17:05 - Entered debug function. Called page is /test

    Zwischen den aufgerufenen pages 1-3 wurde jeweils die Hauptdomain aufgerufen - keine Daten. Zuletzt (4) dann Hauptdomain/Test => Daten geschrieben.

    Frage jetzt - Weiss jemand warum parse_query() nur bei Parametern aufgerufen wird bzw. welche Funktion kann noch VOR parse_query() als Hook verwendet werden um ALLE Aufrufe protokollieren zu können ?

    Vielen Dank für jede Hilfe

    Cy


    Das Debug-Plugin:

    • 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

  • Nun parse_query() wird nach meinem Wissen für Redirect Funktionen genutzt, das aufrufen der Hauptdomaine enthält noch keine Parameter wie page, cat oder so (zb. /?page_id=9), also gibt es keine Parameter die "durchsucht" werden


  • Frage jetzt - Weiss jemand warum parse_query() nur bei Parametern aufgerufen wird bzw. welche Funktion kann noch VOR parse_query() als Hook verwendet werden um ALLE Aufrufe protokollieren zu können ?



    Ich denke mit wp_header odr wp_footer solltest du den besten Erfolg haben.

    z.b. Wordpress Stat klink sich einfach in den Footer ein...

    PHP
    add_action( 'wp_footer', 'stats_footer', 101 );
  • Habe als Hook nun 'template_redirect' direkt am Anfang des Dokumentenparsings gewählt (wp-includes/template-loader.php), scheint gut zu funktionieren. Ergänzen musste ich nun mangels parse_query Pingback:

    PHP
    add_action('template_redirect' , 'cystats_logger');
            add_action('pingback_post' , 'cystats_logger');


    Mal sehen ob es funktioniert oder ich wieder einen Denkfehler drin habe...

    Grüsse

    Edit: Trackback add_action wieder gestrichen, wird auch vom template_redirect abgedeckt.

  • Ich weiß zwar nicht genau, was bei Dir rauskommen soll, aber ich hänge mich ganz ans Ende mit

    PHP
    add_action( 'shutdown', 'plw123wl_write_logfile' );

    rein.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Dabei rauskommen soll eine fertige Version von diesem hier: Klick

    Shutdown ist eine interessante Idee - kann ich irgendwo nachvollziehen ob Shutdown grundsätzlich bei jedem Aufruf (Seite, Feed, Trackback, Pingback,...) nutzbar ist ? Dann könnte ich immerhin einen Aufruf von do_action einsparen.


    Grüsse und Danke

  • ...
    Shutdown ist eine interessante Idee - kann ich irgendwo nachvollziehen ob Shutdown grundsätzlich bei jedem Aufruf (Seite, Feed, Trackback, Pingback,...) nutzbar ist ? Dann könnte ich immerhin einen Aufruf von do_action einsparen...


    Ich denke schon.
    Die index.php wird ja immer geladen, ohne die geht ja nichts mit der Datenbank. Diese lädt ihrerseits die wp-settings.php bei der fast am Ende mit

    PHP
    function shutdown_action_hook() {
        do_action('shutdown');
        wp_cache_close();
    }
    register_shutdown_function('shutdown_action_hook');

    eine PHP-Shutdown-Funktion registriert wird. Und da wird dann do_action('shutdown') aufgerufen.
    Zumindest landet bei mir alles im Logfile, ob nun Seite, feed oder pings (xmlrpc.php), allerdings auch die meisten Sachen aus dem Adminbereich, aber das könnte man ja rausfiltern.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Hrm... die Idee war gut. Beim Versuch zeigte sich aber dass entweder 'shutdown' erst nach 'wp_footer' aufgerufen wird oder ich ein grösseres Pfadproblem durch 'shutdown' bekommen habe.

    Problem: Im Moment hänge ich das Basislogging an 'template_redirect', später bei der Anzeige der Seite wird noch an 'wp_footer' die Ausgabe eines kurzen (optionalen) Javascriptes zwecks Bildschirmabmessungen, Farbtiefe und Browserfensterabmessungen gehängt.

    Um die JS-Daten jetzt einem Besuch zuzuordnen wird eine Pseudo-ID verwendet, die zuerst im Basislogging-Teil generiert und gespeichert wird. Nachdem jetzt bei 'shutdown' als Hook anscheinend zuerst das wp_footer-Javascript generiert wird und dann erst per 'shutdown' das Basislogging können die JS-Daten keinem Besucher mehr zugeordnet werden.


    Werde mir 'shutdown aber mal für später aufheben - prinzipiell könnte ich die Pseudo-ID im wp_footer-Teil generieren und speichern lassen, dann das frühere Basislogging durchführen. Mal sehen, aber im Moment möchte ich lieber den Code an sich aufräumen und die Alpha fertigmachen - 'template_redirect' scheint mein Hauptproblem vorerst gelöst zu haben.

    Danke nochmal an alle.

  • Naja, für meine Zwecke einer simplen Logdatei ist das mit dem Shutdown optimal, ich greife da nur auf die sowieso vorhandenen $_SERVER oder $_GET/$_POST-Variablen zu. Und klar, das heißt ja shutdown, weil es immer ganz am Ende ausgeführt wird, wenn alles was sonst so passiert, gegessen ist. Also quasi kurz bevor PHP fertig ist und die Seite ausgeliefert wird.

    Man kann es mit der Statistik auch übertreiben. Bildschirmabmessungen, Farbtiefe und sowas, tstststs :-)

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Jup,jup, übertreiben kann man es immer. Bildschirm wäre mir im Prinzip auch egal, Farbtiefe auch, aber wenn man häufiger Webseiten baut ist z.B. die durchschnittliche Browserfenstergrösse schon interessant. Könnte man aber auch aus Online-Datenbanken bekommen bzw. nachschlagen. Genauso wie die Nutzungsverteilung der Browser. Usw, usw...

    Allerdings soll das Script WENN ich es jemals fertigstelle doch einen einigermassen angemessenen Umfang haben, schliesslich geht es nicht um mich alleine sondern auch um potentielle andere Nutzer, die dann vielleicht Interesse an solchen Angaben haben. Und die Standartdaten wie oben genannt gehören seit Jahren schon zur Grundausstattung der meisten Statistiksysteme :)

    Und nicht zuletzt wird sich der Javascriptteil auch abschalten lassen - wer nicht will, braucht das auch nicht zu nutzen.

    Grüsse und Danke nochmal - wie gesagt, 'shutdown' bleibt mir im Gedächtnis bzw. wird auf die ToDo-Liste kommen - mal sehen.

Jetzt mitmachen!

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