2. Inhalt
• me, myself & WP
• Plugins in WP
– Interaktion mit WP
• Backend für Plugins
– Integration mit mehreren Plugins
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 2
3. about.me/nida78
Ich…
• 37J-v-2K
• Unternehmer
• Entwickler
• Dozent
• Netzwerker
• Sportler
…und WordPress
• 2004
– eigener Blog
• 2011
– erstes WP-Projekt bei
VCAT
• 2012
– #wpdm += @nida78
• 2013
– VCAT EDULABS mit WP-
Plugin für Geo-Locations
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 3
4. Plugins in WP
• Basis / Grundlagen / Einführung
– Bernhards Workshop [ @2ndKauBoy ]
– codex.wordpress.org/Writing_a_Plugin
• Unterm Strich
– Datei im Verzeichnis /wp-content/plugins
– Ordner möglich, meist auch sinnvoll
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 4
5. Beispiel
vcat-reverse-text.php
<?php
/*
Plugin Name: VCAT Reverse Text
Plugin URI: http://www.vcat.de/edulabs/projekte/wordpress/reverse-text/
Description: Dieses Plugin dreht Text um :)
Version: 0.0.1
Author: VCAT Consulting GmbH (Nico Danneberg)
Author URI: http://www.vcat.de
*/
…
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 5
6. Interaktion 1
Actions
• Liste aller Action Hooks verfügbar
– http://codex.wordpress.org/Plugin_API/Action_Reference
• Wichtige Funktionen:
– add_action
– remove_action
– has_action
– did_action
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 6
7. Beispiel Actions
vcat-reverse-text.php
function vrt_save_post( $post_id ) {
$title = get_the_title( $post_id );
add_post_meta( $post_id, "vcat_reverse_title",
strrev( $title ), true );
}
add_action( 'save_post', 'vrt_save_post' );
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 7
8. Interaktion 2
Filters
• Liste aller Filters verfügbar
– http://codex.wordpress.org/Plugin_API/Filter_Reference
• Wichtige Funktionen:
– add_filter
– remove_filter
– has_filter
– apply_filters
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 8
9. Beispiel Filters
vcat-reverse-text.php
function vrt_reverse_title( $title, $id = null ) {
return ( is_admin() ) ? $title : strrev( $title );
}
add_filter( 'the_title', 'vrt_reverse_title' );
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 9
12. Beispiel Shortcode
Editor & Ausgabe
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 12
13. Eigenes Plugin-Backend
• Eintrag im Menü erzeugen
add_menu_page( 'VCAT EDULABS', // Titel der Seite
'VCAT EDULABS', // Titel im Menü
'manage_options', // Rolle
'vcat-options', // Slug
'vcat_core_options_page', // Funktion
'images/favicon.ico', // Icon
26 // Position
);
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 13
14. Eigenes Plugin-Backend
• Funktion mit Leben füllen
function vcat_core_main_options_page() {
echo '<div class="wrap vcat-edulabs">';
screen_icon( 'vcat-edulabs' );
echo '<h2>VCAT EDULABS Optionen</h2>';
/*** TODO ***/
• Eigene Optionen über Settings
verwalten
– http://codex.wordpress.org/Settings_API
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 14
15. Hauptseite
für mehrere Plugins
• Untermenü erzeugen
– Funktion add_submenu_page() erwartet
„parent_slug“
• Gemeinsame Funktionen definieren
– Menü, Seite, Kopf & Fuß, (rechte) Sidebar
• Kern auslagern & einbinden
– Unterordner, eigenes Plugin, o.ä.
– Prüfen, ob Funktion bereits vorhanden
if( !function_exists( 'vcat_core_create_main…' ) ) {
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 15
16. Gemeinsame Startseite
für mehrere Plugins
• Jedes Plugin benutzt einen Filter…
add_filter( 'vcat_plugins_list',
'vcat_geo_add_plugins_list_info' );
• …und schreibt Daten in ein Array
function vcat_geo_add_plugins_list_info( $list ) {
array_push( $list, array(
'name' => 'VCAT EDULABS Posts at Google Maps (GEO-Plugin)',
'image' => plugins_url( 'vcat-posts-google-maps.png', __FILE__ ),
'settings' => 'admin.php?page=vcat_geo_settings'
) );
return $list;
}
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 16
17. Gemeinsame Startseite
für mehrere Plugins
• Hauptseite ruft die Filter der Plugins…
$vcat_plugins_data = apply_filters(
'vcat_plugins_list', array() );
• …und wertet die Rückgabe aus
if( sizeof( $vcat_plugins_data ) == 0 ) {
/*** Schade, nix da! ***/
} else {
foreach( $vcat_plugins_data as $vcat_plugin ) {
/*** Ausgaben pro Plugin ***/
}
}
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 17
18. Fragen? Fragen!
privat
• M nico@danneberg.de
• W n1da.net
• T @nida78
dienstlich
• M nico.danneberg@vcat.de
• W vcat.de
• T @VCATconsulting
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 18