#wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

18
Erfahrungsbericht aus der Plugin-Entwicklung Nico Danneberg [ @nida78 ]

Transcript of #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

Page 1: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

Erfahrungsberichtaus der Plugin-Entwicklung

Nico Danneberg [ @nida78 ]

Page 2: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 3: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 4: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 5: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 6: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 7: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 8: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 9: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 10: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 11: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 12: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

Beispiel ShortcodeEditor & Ausgabe

21.04.2015 WP Meetup Potsdam - Erfahrungsbericht aus der Plugin-Entwicklung 12

Page 13: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 14: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 15: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 16: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 17: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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

Page 18: #wpdm - Erfahrungsbericht aus der Plugin-Entwicklung

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