Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets > Plugin-Entwicklung

Antwort
 
Themen-Optionen Ansicht
Alt 20.07.2007, 19:15   #1 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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:
PHP-Code:
<?php
    
/*
    Plugin Name: CyDebug
    Plugin URI: http://www.cywhale.de/
    Description: Debug-Plugin
    Version: 0.1
    Author: Michael Weingärtner
    Author URI: http://www.cywhale.de
    */

    
function cystats_debug() {
        
$h=fopen("debug.txt","a");
        
fputs($h,gmdate("d:m:Y, H:i",time())." - Entered debug function. Called page is ".$_SERVER['REQUEST_URI']."\n");
        
fclose($h);
    }
        
add_action('parse_query' 'cystats_debug');

?>

Geändert von cywhale (20.07.2007 um 19:18 Uhr).
cywhale ist offline   Mit Zitat antworten
Alt 20.07.2007, 20:15   #2 (permalink)
PostRank: 4
 
Registriert seit: 18.11.2006
Ort: Köln
Beiträge: 237
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
alex.rabe ist offline   Mit Zitat antworten
Alt 20.07.2007, 20:23   #3 (permalink)
PostRank: 4
 
Registriert seit: 18.11.2006
Ort: Köln
Beiträge: 237
Zitat:
Zitat von cywhale Beitrag anzeigen
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-Code:
add_action'wp_footer''stats_footer'101 ); 
alex.rabe ist offline   Mit Zitat antworten
Alt 20.07.2007, 20:28   #4 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
Ja, hatte mit wp_footer gearbeitet. Dann wiederum hatte ich Probleme mit den Feeds. Allerdings könnte ich ja versuchen den wp_footer beispielsweise als Fallbacklösung zu verwenden falls parse_query nicht möglich ist ?
cywhale ist offline   Mit Zitat antworten
Alt 20.07.2007, 21:02   #5 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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-Code:
        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.

Geändert von cywhale (20.07.2007 um 21:04 Uhr).
cywhale ist offline   Mit Zitat antworten
Alt 20.07.2007, 21:24   #6 (permalink)
PostRank: 10
 
Benutzerbild von Putzlowitsch
 
Registriert seit: 21.10.2006
Beiträge: 2.106
Ich weiß zwar nicht genau, was bei Dir rauskommen soll, aber ich hänge mich ganz ans Ende mit
PHP-Code:
 add_action'shutdown''plw123wl_write_logfile' ); 
rein.

Gruß
Ingo
__________________
putzlowitsch.de WP 2.1.3 bei All-Inkl und Strato (schnurpsel.de)
Putzlowitsch ist offline   Mit Zitat antworten
Alt 20.07.2007, 21:34   #7 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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
cywhale ist offline   Mit Zitat antworten
Alt 20.07.2007, 23:25   #8 (permalink)
PostRank: 10
 
Benutzerbild von Putzlowitsch
 
Registriert seit: 21.10.2006
Beiträge: 2.106
Zitat:
Zitat von cywhale Beitrag anzeigen
...
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-Code:
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
__________________
putzlowitsch.de WP 2.1.3 bei All-Inkl und Strato (schnurpsel.de)
Putzlowitsch ist offline   Mit Zitat antworten
Alt 21.07.2007, 14:20   #9 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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.
cywhale ist offline   Mit Zitat antworten
Alt 21.07.2007, 14:30   #10 (permalink)
PostRank: 10
 
Benutzerbild von Putzlowitsch
 
Registriert seit: 21.10.2006
Beiträge: 2.106
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
__________________
putzlowitsch.de WP 2.1.3 bei All-Inkl und Strato (schnurpsel.de)
Putzlowitsch ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 | Impressum | Ein Inpsyde.com Projekt