this is a single of this project

Einfache WordPress Plugin Class

Wordpress Plugin Class

Ein Plugin für von WordPress zu programmieren, ist an vielen Punkten selbst für erfahrene PHP-Programmierer eine Herausforderung. Neben dem Verständnis der Wirkungsweise eines Plugins verliert man sich bei der Programmierung schnell in Chaos, weil Konzepte wie Namespaces oder getrennte Variablenräume nicht automatisch zur Verfügung stehen. Es ist nicht auszuschließen, dass Plugins, die eigentlich nichts miteinander zu tun haben, dennoch in Konflikt geraten. Der Wunsch nach einer standardisierten und einfachen WordPress Plugin Class ist schnell geboren. Nicht möglich? Doch, ist es!

Eine einfache WordPress Plugin Class

Wie unser einfaches Beispiel zeigt, ist die WordPress Plugin Class komplett gekaspelt. Die Möglichkeit, mit anderen Klassen und Variablenräumen in Konflikt zu kommen, beschränkt sich auf die Wahl des gleichen Klassennamens, der passenderweise an den Pluginnamen angelehnt sein sollte. Damit lässt sich dieses Konfliktpotential auch noch minimieren.

Die Registrierung von hooks, actions und filter läuft im Konstruktor der WordPress Plugin Class und ist etwas gewöhnungsbedürftig. Natürlich können innerhalb der Klasse weitere Klassen instanziiert werden, die vorher eingebunden sein müssen. Die Einbindung der upgrade.php Datei ermöglicht es der Klasse, auf Strukturen von WordPress zuzugreifen, um beispielsweise während der Aktivierung notwendige Datenbankfelder zu erzeugen.

Manches muss global sein

Dass WordPress für einen solchen Programmieransatz einfach nicht gemacht ist, merkt man bei der Verwendung von global instanziierten Strukturen. Es ist immer wieder notwendig, wordpresseigene Objekte mit dem Schlüsselwort global den Methoden der WordPress Plugin Class bekannt zu machen, damit sie verwendet werden dürfen. Das ist mitunter etwas gewöhnungsbedürftig, sorgt aber in Summe immer noch für mehr Übersichtlichkeit.

Ist die Klasse geschrieben, muss sie einmal erzeugt werden. Es ist nicht notwendig, die Instanz mit einem Namen zu versehen, es sei denn, ein Zugriff auf die Klasse soll noch einmal notwendig werden. In den meisten Fällen wird das allerdings nicht der Fall sein.

Der folgende Quellcode zeigt die Minimalversion der WordPress Plugin Class, die nach Aktivierung einen Contentfilter installiert. Sie ist ausdrücklich kein Framework, sondern soll nur die Klassennutzung für die WordPress Plugin Programmierung verdeutlichen. Dieser wandelt alle Posts und Pages in Großbuchstaben um. Die Verwendung der Klasse geschieht vollkommen auf eigene Gefahr, egal ob in ihrer jetzigen Form oder abgewandelt!

 

<?php
/*
Plugin Name: WordPress Plugin Class
Plugin URI: http://www.beyl.de/
Description: Example Mini WordPress Plugin Class in one simple class structure
Version: 1.00
Author: ISBeyl - Sebastian Beyl
Author URI: http://www.beyl.de/
*/


// Maybe you want to use some database options, you have to integrate this
// php file to use it inside your class
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );


// If you want to load some other classes related to your project
// it is a good idea to do it here.
// require_once(  plugin_dir_path( __FILE__ ) . 'class.your-own-file.php' );


/**
 * Class ClassExamplePlugin
 *
 * This is your main class. All plugin functionality will be capsuled here.
 */
class WordPressPluginClass {


    /**
     * ClassExamplePlugin constructor.
     *
     * This constructor is the place to register all hooks, actions and filters. You have examples
     * how to use it.
     */
    public function __construct() {

        // register hook
        register_activation_hook( __FILE__, array(&amp;$this, 'plugin_activate') );

        // add action example, plugin deactivation in this case
        add_action( 'deactivate_'.plugin_basename(__FILE__), array(&amp;$this, 'plugin_deactivate') );

        // example of a simple content filter
        add_filter( 'the_content', array(&amp;$this, 'content_example') );

    }


    /**
     * This is a really simple content filter. The content text of the posts and pages will be shown
     * as upper case if this plugin is activated
     *
     * @param string $content       the content of the page
     * @return string               returned content
     */
    public function content_example( $content ) {

        // copy the content to work on it
        $s_Content = $content;

        // do whatever you want to do with the content
        $s_Content = strtoupper( $s_Content );

        // return the new content
        return $s_Content;

    }


    /**
     * This method is called when the plugin is activated.
     */
    public function plugin_activate() {

        // call all database activation methods etc.

    }


    /**
     * this method is called if the plugin is deactivated.
     */
    public function plugin_deactivate() {

        // call all cleaning jobs if needed

    }


}

// Instantiate the class to actually do something
new WordPressPluginClass();

 

 

         

Über den Autor Alle Beiträge ansehen

Sebastian

Sebastian Beyl ist der Gründer des Agentur-Netzwerks ISBeyl und betreibt das Unternehmen bereits seit 1997. Der Medienpsychologe und Medieninformatiker ist leidenschaftlicher Programmierer.

Schreibe einen Kommentar

Your email address will not be published. Required fields are marked *

Help-Desk