Willkommen auf der privaten Homepage von Johannes Jarolim, Salzburg, Österreich. Welcome to the private homepage of Johannes Jarolim, Salzburg, Austria, Europe.
Eine Artikel mit

Schlagwort anpassen

Administrationsmasken in WordPress verändern und ergänzen

Da ich derzeit evaluiere, ob ich WordPress ohne Hacks über ein Plugin zu einem PhotoBlog umfunktionieren kann, interessierte es mich natürlich sehr, wie weit ich WordPress Administrationsmasken anpassen und verändern kann.

WordPress bietet schon standardmäßig einige Hooks an, die es erlauben diverse Administrationsmasken mit eigenen Funktionalitäten zu ergänzen. Allerdings kommt man mit diesen nicht an alle Stellen heran – Standardmäßig kann man die Masken ohne Hacks am WordPress Quellcode nur ergänzen. Als Beispiel ziehe ich die Maske "Beitrag schreiben" heran (Erweiterte Eingabe). Diese bietet out of the box 3 Hooks für eigene Funktionen an:

edit_form_advanced
Dieser Hook ermöglicht es, eigene Inhalte unter dem Texteingabefeld einzufügen. Beispiel:

function editFormAdvanced() {
    echo ‘<div style="border:1px solid red; padding:1em;">Hello World!</div>’;
}
add_filter(‘edit_form_advanced’, ‘editFormAdvanced’);


dbx_post_advanced

Zusätzliche Advanced dbx – Widget Balken am Ende der Maske. Der Code ist etwas umfangreicher, weil ein dbx-Container gemacht werden muß. Beispiel:

function dbxPostAdvanced() {
    echo ‘
        <fieldset id="yapbDbxPostAdvanced" class="dbx-box">
            <h3 class="dbx-handle">YAPB</h3>
            <div class="dbx-content">Hello World!</div>
        </fieldset>
    ‘;
}
add_filter(‘dbx_post_advanced’, ‘dbxPostAdvanced’);

dbx_post_sidebar
Zusätzlicher dbx-Widget Balken rechts. Der Code ist etwas umfangreicher, weil ein dbx-Container gemacht werden muß. Beispiel:

function dbxPostSidebar() {
    echo ‘
        <fieldset id="yapbdiv" class="dbx-box">
            <h3 class="dbx-handle">Yapb</h3>
            <div class="dbx-content">Hello World!</div>
        </fieldset>   
    ‘;
}
add_filter(‘dbx_post_sidebar’, ‘dbxPostSidebar’);

Und andere, ausgefallenere Stellen?
Wie bekomme ich jetzt aber zB. Inhalte ohne Hacks an den Anfang des Forms? Die Antwort, die ich gefunden habe, lautet: Mittels Manipulation des DOM. Beim ersten aufkeimen der Idee stöhnte ich jetzt unwillkürlich auf – DOM-Manipulation ist ja eine Heidenarbeit… Wenn man die richtige Library nicht kennt:

prototype.js
Geschrieben von Sam Stephenson, bietet diese Library mächte Werkzeuge für DOM-Manipulationen. Einlesen kann sich jeder selber (Zb. Auf dieser Seite). Machen wir es kurz – Hier ein Samplecode, der ein DIV an die erste Stelle des Forms bringt – Vorrausgesetzt, die JS-Library prototype ist ebenfalls mit Eingebunden:

function addContentAtTheBeginning() {
    $myDivContent = ‘<div style="border:1px solid red;padding:1em;">Hello World</div>’;
    echo ‘
        <script language="JavaScript">
            new Insertion.Before(\’titlediv\’, ‘ . $myDivContent . ‘);
        </script> 
    ‘;
}
add_filter(‘edit_form_advanced’, ‘addContentAtTheBeginning’);

Kurz, einfach, schmerzlos, oder wie der gebildete Inder zu sagen pflegt: C’est ca:

Demonstrationsplugin downloaden (12kB)