Schlagwort-Archiv: Autoload

Standard WordPress Plugin Funktionen

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.