Hier eine kleine Walker Klasse für WordPress um sich ein Menü in der Form ” Link1 | Link2 | Link3 ” zu erstellen.
Einfach die Klasse in die functions.php des Themes und den Menü Eintrag dort im Template platzieren wo er hin soll.
|
|
Zwei der Funktionen/Methoden die man in zufunkt wohl in allen meinen Plugins finden wird sind:
Voraussetzung ist PHP 5.1.2 für die Autoload Funktion.
1. Zum ermitteln von Plugin Daten, damit nicht immer alles per Constante definiert wird um Namensraum freizuhalten:
public static function get_plugin_data($get_data=false) {
$plugin_data=wp_cache_get('plugin_data','pluginname');
if ($plugin_data === false || empty($plugin_data['Version'])) {
$plugin_data = get_file_data( __FILE__, array(
'Name' => 'Plugin Name',
'PluginURI' => 'Plugin URI',
'Version' => 'Version',
'Description' => 'Description',
'Author' => 'Author',
'AuthorURI' => 'Author URI',
'TextDomain' => 'Text Domain',
'DomainPath' => 'Domain Path'
), 'plugin' );
$plugin_data['BaseName']=plugin_basename(__FILE__);
$plugin_data['Folder']=dirname( plugin_basename( __FILE__ ) );
$plugin_data['URL']=plugins_url( '', __FILE__ );
if (defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG)
$plugin_data['JSVersion']=time();
else
$plugin_data['JSVersion']=$plugin_data['Version'];
wp_cache_add('plugin_data',$plugin_data,'pluginname');
}
if (!$get_data)
return $plugin_data;
return $plugin_data[$get_data];
}
2. Die Autoload Funktion von PHP zum automatischen laden von Klassen damit sie nur dann geladen werden wenn Sie auch benötigt werden. Das heißt verwend man ein “add_action” wird die classe erst geladen wenn wirklich ein “do_action” erfolgt oder die Seiten klasse für einen Menü Eintrag erst geladen wird wenn der Menüpunkt tatsächlich aufgerufen wird. Voraussetzung ist das man das ganze Plugin Klassen basierend aufbaut. Das kann dann nicht nur Ressourcen Sparen.
public function __construct() {
//register autoloader
spl_autoload_register( array( $this, 'autoloader' ) );
}
public static function autoloader( $class_name ) {
//WordPress classes loader
$wpclass='/class-'.strtolower(str_replace('_','-',$class_name)).'.php';
if ( is_file(ABSPATH .'wp-admin'.DIRECTORY_SEPARATOR.'includes'.$wpclass) ) {
require(ABSPATH .'wp-admin'.DIRECTORY_SEPARATOR.'includes'.$wpclass);
return true;
}
if ( is_file(ABSPATH . WPINC . $wpclass) ) {
require(ABSPATH . WPINC . $wpclass);
return true;
}
//Plugin classes to load
if ( strpos( $class_name,'PluginClass_') !== false ) {
$class_load = dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'class-' . strtolower( str_replace( array( 'PluginClass_', '_' ), array( '', '-' ), $class_name ) ) . '.php';
if ( is_file( $class_load ) ) {
require($class_load);
return true;
}
}
return false;
}
Diese sollten sich innerhalb der Haupt Plugin Datei in einer Klasse befinden.
Da bin ich auch ungefähr angefangen mit dem Interdingsda….
Mit einem 28k Modem und einem Anbieter der 80 DM im Monat dafür bekommen hatte das man einen Zugriffspunkt hatte. Seine Telefonkosten musste man natürlich noch oben drauf Zahlen. Der Anbieter selber hatte damals selber nicht mehr wie eine 256k Standleitung……
Ich muss in meinem Plugin für WordPress den ABSPATH übergeben um eine eigene Ajax Behandlung zu haben.
Was meint ihr ist der Code schnipsel dafür geeignet um es möglicht sicher gegen Angriffe zu machen ?
if ( is_file( dirname(dirname(dirname(dirname( __FILE__ )))).'/wp-load.php' ) ) {
require_once(dirname(dirname(dirname(dirname( __FILE__ )))).'/wp-load.php');
} else {
$abspath = filter_input( INPUT_POST, 'ABSPATH', FILTER_SANITIZE_URL );
$abspath = rtrim(realpath($abspath), '/\\' );
if ( ! empty($abspath) && is_dir( $abspath . '/' ) && is_file( realpath( $abspath . '/wp-load.php' ) ) ) {
require_once($abspath . '/wp-load.php');
} else {
die();
}
}
Erläuterung:
Wenn der Plugins Ordner im Standard Verzeichnis ist oder zumindest in der selben Verzeichnis Tiefe muss die Übergabe nicht genutzt werden.
Sonst.
Das übergebene Verzeichnis vorfiltern (nur in URLs erlaubte Zeichen werden zugelassen)
mit ‘realpath()’ alle ‘../’,’./’ entfernen und prüfen ob das Verzeichnis existiert.
da ‘realpath()’ auch das aktuelle Verzeichnis ausgibt nochmal Verzeichnis und Datei auf Existenz prüfen.
WP-load.php laden.
Ich habe die 6360 von einem Unitymedia Techniker vor gut einer Woche installiert bekommen da ich probleme mit der 7170 un der Telefonie hatte. Siehe Artikel “Unitymedia VoIP Einstellungen“. Die Probleme Traten bei der 7170 nach den Einstellungen nur noch bei gleichzeitigen Downloads auf und ich hatte das Gefühl das diesem mit einer Bandbreite grösser 20Mbit einfach überfordert ist. Das Problem ist jedenfalls weg mit der 6360. Weiterlesen
Ich hatte einen Techniker von Unitymedia da, da ich mal wieder Probleme mit “Echos” beim VoIP hatte. Ich weiß natürlich das es bei VoIP, Technik bedingt, immer wieder zu “Echos” kommen kann, aber ich versuche natürlich das optimale aus meinem Anschluss raus zu holen. Der Techniker hat noch ein paar werte in der Firtz Box (Telefon Plus Kunde) geändert die ich gern mit euch teilen möchte.
Weiterlesen
ClipInc ist eine kostenlose Radio Software aus dem Hause Tobit mit der man auch Musikstücke die gespielt werden legal und voll automatisch mitscheiden kann.
Seit dem ich ADSL2+ (ca. 4 Wochen) hab, habe ich immer Verbindungsabbrüche und muss Ständig mein DSL Modem resetten (mehrmals Täglich) damit ich wieder ins Internet komme.
Die Störung habe ich schon vor drei Wochen meinem Anbieter gemeldet. Nach dem ich jede Woche mal nach gefragt habe was mit der Störung ist und mir dabei auch Mitarbeiter den grössten scheiß erzählt haben. Aussage: “In einem 12 Stöckigen Gebäude währe eine Elektronik def. die über alle 12 Stockwerke geht und erst neu vom Hersteller Produziert werden muss”.
Heute habe ich erfahren, nachdem ich erst selber etwas geforscht habe, das Mein DSL Modem (sphairon AR680E1-B V2) das ich neu bekommen habe ein Firmware update braucht das sich zur Zeit im Test befindet und dann automatisch aufgespielt wird.
Na ja zumindest sagte mir der Mitarbeiter heute das ich mich wenn die Störung vorbei ist noch mal melden soll damit mann sich über eine Rückvergütung einig wird.
Update(27.08.2007): Mittlerweile habe ich ein neues Modem mit einer neuen Firmware bekommen damit läuft die Verbindung so wie es aussieht stabil eine kleine Rückvergütung wurde auch schon beantragt.
Benötigt wird DD-WRT v23 SP2 Firmware (Standard oder VPN) auf einem Linksys Router. Installationsanweisungen gibt es auf der DD-WRT Homepage. Außerdem sollte die VPN Einwahl auf den Windows Server schon funktionieren da diese hier nicht beschrieben wird.
Im Router unter [Administration] [Services] im Punkt “PPTP-Client” folgendes einstellen.
PPTP Client Option: Einschalten
Server-IP oder DNS Name: Hier die Server IP unter der der Server aus dem Internet erreichbar ist oder die DNS Adresse
Entferntes Subnetz: IP-Adresse des Netzes in dem der Server steht. Muss sich vom einen netz unterscheiden.
Entfernte Subnetz Maske: Die Subnetzmaske des Netzes in dem der Server ist.
MPPE-Verschlüsselung: mppe requierd (obwohl in der Hilfe was anderes steht für Windows Server)
MTU: 1450
MRU: 1450
NAT: Einschalten (ging bei mir nur wenn es eingeschaltet wahr)
Nutzername: Benutzername incl. Domänenname des VPN Benutzers (muss mit 2 \ von einander getrennt werden)
Passwort: das Passwort des Benutzers (Sollte nur Alpha-nummerisch sein. Also keine #, /,@ usw.)
Bei Problemen mit der verbindung kann man sich per Telnet oder SSH auf den Router begeben und folgendes aussführen:
/tmp/pptpd_client/vpn stop
pptp IP-des-Servers file /tmp/pptpd_client/options.vpn debug nodetach
aufrufen. Dann bekommt man das einwählen angezeigt und kann dem eventuelle Fehler entnehmen.
Manchmal kommt es vor das der Router die Verbindung nicht automatisch aubaut dann kann man folgendes im Startup hinterlegen:
sleep 60
/tmp/pptpd_client/vpn stop
pptp IP-des-Servers file /tmp/pptpd_client/options.vpn
Ich habe nur festgestellt das es nach dem Reboot des Routers aber meistens einfach nur noch einen Moment dauert bis die Verbindung da ist.
bevor ich mir die HTML Umlaute immer suchen muss:
Quelle: SELFHTML