Wordpress Plugins - Einblicke in eine Geheimwissenschaft

26
Plugins für Einsteiger Einblicke in eine Geheimwissenschaft

Transcript of Wordpress Plugins - Einblicke in eine Geheimwissenschaft

Page 1: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

Plugins für Einsteiger

Einblicke in eine Geheimwissenschaft

Page 2: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

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

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

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

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

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

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

Metadaten

Thomas Frütel http://blog.webmaster-homepage.de/

http://twitter.com/Fruetel

Page 9: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

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

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

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

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

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

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

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

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

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

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

Menüeintrag im Dashboard

Thomas Frütel http://blog.webmaster-homepage.de/

http://twitter.com/Fruetel

Page 20: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

Die CleverOptions Funktion

Thomas Frütel http://blog.webmaster-homepage.de/

http://twitter.com/Fruetel

Page 21: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

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

Das Optionsformular

Thomas Frütel http://blog.webmaster-homepage.de/

http://twitter.com/Fruetel

Page 23: Wordpress Plugins - Einblicke in eine Geheimwissenschaft

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

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

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

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