![Page 1: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/1.jpg)
Plugins für Einsteiger
Einblicke in eine Geheimwissenschaft
![Page 2: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/2.jpg)
Wozu überhaupt ein Plugin schreiben
• Erweiterung oder Veränderung der Kernfunktionalität von WordPress
• Erspart Kopfschmerzen bei Versionsupgrades• Lässt sich an andere Nutzer einfach
weitergeben
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 3: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/3.jpg)
Beispiel: Clever Adsense
• In aktuellen Posts soll Werbung möglichst dezent ausfallen
• Ältere Blogposts dürfen aggressivere Werbung beinhalten
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 4: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/4.jpg)
Voraussetzungen
• Ohne PHP geht‘s nicht• Aber: Plugins sind auch keine
Raketentechnologie
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 5: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/5.jpg)
Der Codex
• Der Codex enthält Antworten auf (fast) alle Fragen
• http://codex.wordpress.org/
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 6: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/6.jpg)
Anatomie eines Plugins
• Eine oder mehrere PHP-Dateien in WP-Content/plugins
• Kommentarbereich mit Metadaten über das Plugin
• Lizenzhinweise• Eventuell benötigte Grafiken oder Stylesheets
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 7: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/7.jpg)
Metadaten
<?php
/*
Plugin Name: Clever Ads
Description: Steuert die Platzierung von Werbemitteln
Author: Thomas Frütel
Author URI: http://fruetel.de
*/
?>
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 8: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/8.jpg)
Metadaten
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 9: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/9.jpg)
Lizenz<?php
/* Copyright YEAR PLUGIN_AUTHOR_NAME (email : PLUGIN AUTHOR EMAIL)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
?>
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 10: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/10.jpg)
Adsense Funktionen
function getAdsenseBanner()
{
return '<script type="text/javascript"><!--
google_ad_client = "pub-xxxxxxxx";
google_ad_slot = "yyyyyyyy";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>';
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 11: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/11.jpg)
Adsense Funktionen
function getAdsenseLargeRectangle()
{
return '<script type="text/javascript"><!--
google_ad_client = "pub-xxxxxxxx";
google_ad_slot = "yyyyyyyy";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>';
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 12: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/12.jpg)
Alter des Posts ermitteln
function isOldPost()
{
global $wp_query;
$currentPost = $wp_query->post;
$post_date = mysql2date('U',$currentPost->post_date);
$current_date = time();
$offset = 24*3600*60;
return (($post_date + $offset) < $current_date);
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 13: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/13.jpg)
Hooks
• Hooks verbinden ein Plugin mit den WordPress Kernfunktionalitäten
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 14: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/14.jpg)
Filter Hooks
• Verändern Daten vor der Übermittlung an Browser oder Datenbank
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 15: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/15.jpg)
Action Hooks
• Werden durch bestimmte Ereignisse in WordPress ausgelöst
• Zum Beispiel Veröffentlichung eines Posts, Abgabe eines Kommentars
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 16: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/16.jpg)
Verankern des Clever Adsense Plugins
function showAds($content){
if (is_single()){
if (isOldPost()) {return getAdsenseLargeRectangle().$content;
} else {return $content.getAdsenseBanner();
}} else {
return $content;}
}
//Filter Hookadd_filter ('the_content', 'showAds');
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 17: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/17.jpg)
Konfigurierbarkeit
• Viele Plugins lassen sich im WordPress Adminbereich konfigurieren
• Das können wir auch!
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 18: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/18.jpg)
Action Hook für das Backendfunction showAdsAdmin(){ /** * @params $page_title, $menu_title,$capability, * @params $menu_slug, $function */ add_options_page('Clever Ads', 'Clever Ads', 10,
'clever_ad_options', 'cleverOptions');}
function cleverOptions(){}
add_action('admin_menu', 'showAdsAdmin');
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 19: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/19.jpg)
Menüeintrag im Dashboard
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 20: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/20.jpg)
Die CleverOptions Funktion
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 21: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/21.jpg)
Das Optionsformular
function cleverOptions()
{
?>
<div class="wrap">
<h2>Clever Ads</h2>
<form method="post" action="">
Post ist alt ab <input name="old_age" value="<?php echo get_option("ca_old_age") ?>" /> Tagen<br />
Adsense Ad Client: <input name="adclient" value="<?php echo get_option("ca_adclient")?>" /><br />
Adsense Adslot: <input name="adslot" value="<?php echo get_option("ca_adslot")?>" /><br />
<input type="hidden" name="action" value="update_options" />
<input type="submit" name="Submit" value="<?php _e('Save Changes') ?>" />
</form>
</div>
<?php
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 22: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/22.jpg)
Das Optionsformular
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 23: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/23.jpg)
Optionen speichern
function cleverOptions()
{
if ($_POST['action'] == 'update_options') {
update_option("ca_old_age", $_POST['old_age']);
update_option("ca_adclient", $_POST['adclient']);
update_option("ca_adslot", $_POST['adslot']);
}
?>
<div class="wrap">
<h2>Clever Ads</h2>
<form method="post" action="">
Post ist alt ab <input name="old_age" value="<?php echo get_option("ca_old_age") ?>" /> Tagen<br />
Adsense Ad Client: <input name="adclient" value="<?php echo get_option("ca_adclient")?>" /><br />
Adsense Adslot: <input name="adslot" value="<?php echo get_option("ca_adslot")?>" /><br />
<input type="hidden" name="action" value="update_options" />
<input type="submit" name="Submit" value="<?php _e('Save Changes') ?>" />
</form>
</div>
<?php
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 24: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/24.jpg)
Optionen auslesenfunction isOldPost()
{
global $wp_query;
$currentPost = $wp_query->post;
$post_date = mysql2date('U',$currentPost->post_date);
$current_date = time();
$offset = 24*3600*get_option('ca_old_age');
return (($post_date + $offset) < $current_date);
}
function getAdsenseLargeRectangle()
{
return '<script type="text/javascript"><!--
google_ad_client = "'.get_option('ca_adclient').'";
google_ad_slot = "'.get_option('ca_adslot').'";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>';
}
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 25: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/25.jpg)
Standardwerte setzenfunction initializeCleverOptions()
{
add_option("ca_old_age", 60);
add_option("ca_adclient", "xxxxx-xxxxx");
add_option("ca_adslot", "yyyyy-yyyyy");
}
register_activation_hook(__FILE__, "initializeCleverOptions");
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel
![Page 26: Wordpress Plugins - Einblicke in eine Geheimwissenschaft](https://reader035.vdocuments.pub/reader035/viewer/2022081518/554bc3d7b4c90594278b534e/html5/thumbnails/26.jpg)
Ausblick
• Absichern des Backend-Formulars mit einem Nonce• Erkennen von Besuchern, die über Google kommen• Erkennen von Stammlesern über ein Cookie• Identifizieren von Google Suchbegriffen• Geotargeting• Aufräumen der Optionen bei Deinstallation• Plugin bei WordPress.org veröffentlichen
Thomas Frütel http://blog.webmaster-homepage.de/
http://twitter.com/Fruetel