Upload
nico-danneberg
View
353
Download
0
Embed Size (px)
Citation preview
Erfahrungsberichtaus der Plugin-Entwicklung
Nico Danneberg [ @nida78 ]
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
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
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
Beispielvcat-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
Interaktion 1Actions
• 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
Beispiel Actionsvcat-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
Interaktion 2Filters
• 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
Beispiel Filtersvcat-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
Interaktion 3Shortcodes
• Shortcode API verfügbar– https://codex.wordpress.org/Shortcode_API
• Wichtige Funktionen:– add_shortcode– remove_shortcode– do_shortcode– shortcode_atts
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 10
Beispiel Shortcodevcat-reverse-text.php
function vrt_reverse_shortcode( $atts, $content = "" ) {
$atts = shortcode_atts( array( 'bold' => false ),
$atts, 'reverse' );
if( $atts[ 'bold' ] ) {
return "<strong>" . strrev( $content ) . "</strong>";
} else {
return strrev( $content );
}
}
add_shortcode( 'reverse', 'vrt_reverse_shortcode' );
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 11
Beispiel ShortcodeEditor & Ausgabe
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 12
Eigenes Plugin-Backend
• Eintrag im Menü erzeugenadd_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
Eigenes Plugin-Backend
• Funktion mit Leben füllenfunction 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
Hauptseitefü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 vorhandenif( !function_exists( 'vcat_core_create_main…' ) ) {
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 15
Gemeinsame Startseitefür mehrere Plugins
• Jedes Plugin benutzt einen Filter…add_filter( 'vcat_plugins_list',
'vcat_geo_add_plugins_list_info' );
• …und schreibt Daten in ein Arrayfunction 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
Gemeinsame Startseitefür mehrere Plugins
• Hauptseite ruft die Filter der Plugins…$vcat_plugins_data = apply_filters(
'vcat_plugins_list', array() );
• …und wertet die Rückgabe ausif( 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
Fragen? Fragen!
privat• M [email protected]• W n1da.net• T @nida78
dienstlich• M [email protected]• W vcat.de• T @VCATconsulting
21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 18