Eigenes WordPress Plugin mit Optionen

5
1512
views

Letzte Woche habe ich Euch hier auf flodji.de gezeigt, wie Ihr ganz einfach ein eigenes WordPress Plugin schreiben könnt, und das auch ohne einen Doktor in PHP zu haben.
Heute werden wir nun an diese Arbeit anknüpfen und ich zeige Euch wie Ihr Euer selbstgeschriebenes Plugin um ein Optionsmenü bzw. Adminmenü erweitert.

Kleiner Tipp:
Ich nutze dieses Plugin als Erweiterung der functions.php meines WordPress Themes und es funktioniert super. Außerdem hat das Plugin den Vorteil, dass meine Codeschnipsel nicht verloren gehen, wenn ich ein neues Theme installiere.

Das Beispiel-Plugin könnt Ihr übrigens am Ende dieses Beitrags auch Downloaden.

Was brauchen wir?

  • Einen Texteditor (z.B. Editor oder Notepad++).
  • (Optional) Ein ftp Programm zum Hochladen des fertigen Plugins.

Schritt 1:

Öffnet die Plugindatei (meinefunktionen.php) in Eurem Texteditor.
Inhaltlich solltet Ihr jetzt den folgenden Code sehen:

<?php
/*
Plugin Name: Meine Funktionen
Plugin URI: http://flodji.de
Description: Erweiterung meiner functions.php
Version: 1.0
Author: flodji
Author URI: http://flodji.de
License: GPL2
*/

function googlePlusAutor(){
if (!is_singular()) {
echo '<link href="https://plus.google.com/xxxxxx/" rel="publisher" />';
} else {
echo '<link href="https://plus.google.com/xxxxxx?rel=author" rel="author" />';
}
}
add_action('wp_head', 'googlePlusAutor');

?>

Schritt 2:

Jetzt passt Ihr Euren Code so an, wie ich es im Beispiel vorgemacht habe:

<?php
/*
Plugin Name: Meine Funktionen
Plugin URI: http://flodji.de
Description: Erweiterung meiner functions.php
Version: 1.0
Author: flodji
Author URI: http://flodji.de
License: GPL2
*/

function googlePlusAutor(){
$option_string = get_option('meineFunktionen');
$option = array();
$option = json_decode($option_string, true);
if (!is_singular()) {
echo '<link href="https://plus.google.com/'.stripslashes($option['gplusid']).'/" rel="publisher" />';
} else {
echo '<link href="https://plus.google.com/'.stripslashes($option['gplusid']).'?rel=author" rel="author" />';
}
}
add_action('wp_head', 'googlePlusAutor');
?>

Damit ist die Grundfunktion des Plugins bereit Daten aus den Plugin-Optionen zu übernehmen.

Schritt 3:

Der Code für das Options-Menü sieht so aus:

<?php
add_action('admin_menu', 'meineFunktionen_menu');
function meineFunktionen_menu() {
	add_options_page('meineFunktionen Optionen', 'meineFunktionen', 'manage_options', 'meineFunktionen', 'meineFunktionen_options');
}

function meineFunktionen_options () {
	$option_name = 'meineFunktionen';
	if (!current_user_can('manage_options')) {
		wp_die( __('You do not have sufficient permissions to access this page.') );
	}
	if( isset($_POST['gplusid'])) {
		$option = array();
		$option['gplusid'] = esc_html($_POST['gplusid']);
		update_option($option_name, json_encode($option));
		$outputa .= '<div class="updated"><p><strong>'.__('Einstellungen gespeichert.', 'menu' ).'</strong></p></div>';
	}
	$option = array();
	$option_string = get_option($option_name);
	if ($option_string===false) {
		$option = array();
		$option['gplusid'] = array('gplusid'=>true);
		$option_string = get_option($option_name);
	}
	$option = json_decode($option_string, true);
	$outputa .= '
	<div class="wrap">
		<h2>'.__( 'meine Funktionen', 'menu' ).'</h2>
		<form name="form1" method="post" action="">
		<table>
		<tr><td valign="top"><b>'.__("Google Plus ID", 'menu' ).':</b></td>
		<td style="padding-bottom:20px;">
		<input type="text" name="gplusid" value="'.stripslashes($option['gplusid']).'" size="100"><br />
		<span class="description">z.B.: '.htmlentities('123456789132456789123').'</span>
		</td></tr>
		</table>
		<hr />
		<p class="submit">
			<input type="submit" name="Submit" class="button-primary" value="'.esc_attr('Speichern').'" />
		</p>
		</form>
	</div>';
	echo $outputa; 
}
?>

Das ist eine ganze Menge neuer Code, daher werde ich mal kurz erklären was das Alles überhaupt ist:

Menüeintrag erstellen:

add_action('admin_menu', 'meineFunktionen_menu');
function meineFunktionen_menu() {
	add_options_page('meineFunktionen Optionen', 'meineFunktionen', 'manage_options', 'meineFunktionen', 'meineFunktionen_options');
}

Mit dieser Funktion sagen wir WordPress, dass ein neuer Menüpunkt im Adminbereich angelegt werden soll und wie er heißt.

Options Name und Berechtigung:

$option_name = 'meineFunktionen';
if (!current_user_can('manage_options')) {
wp_die( __('You do not have sufficient permissions to access this page.') );
}

Hier wird zum Einen der Options Name festgelegt und zum Anderen geprüft ob der aktuelle Benutzer die nötigen Rechte hat die Einstellungen für dieses Plugin zu ändern.

Einstellungen prüfen:

	if( isset($_POST['gplusid'])) {
		$option = array();
		$option['gplusid'] = esc_html($_POST['gplusid']);
		update_option($option_name, json_encode($option));
		$outputa .= '<div class="updated"><p><strong>'.__('Einstellungen gespeichert.', 'menu' ).'</strong></p></div>';
	}
	$option = array();
	$option_string = get_option($option_name);
	if ($option_string===false) {
		$option = array();
		$option['gplusid'] = array('gplusid'=>true);
		$option_string = get_option($option_name);
	}
	$option = json_decode($option_string, true);

Dieser ganze Block überprüft ob bereits Einstellungen für das WordPress Plugin in der Datenbank gespeichert wurden bzw. speichert Einstellungen und Änderungen in der Datenbank ab.

Ausgabe:

	$outputa .= '
	<div class="wrap">
		<h2>'.__( 'meine Funktionen', 'menu' ).'</h2>
		<form name="form1" method="post" action="">
		<table>
		<tr><td valign="top"><b>'.__("Google Plus ID", 'menu' ).':</b></td>
		<td style="padding-bottom:20px;">
		<input type="text" name="gplusid" value="'.stripslashes($option['gplusid']).'" size="100"><br />
		<span class="description">z.B.: '.htmlentities('123456789132456789123').'</span>
		</td></tr>
		</table>
		<hr />
		<p class="submit">
			<input type="submit" name="Submit" class="button-primary" value="'.esc_attr('Speichern').'" />
		</p>
		</form>
	</div>';
	echo $outputa; 

Dieser Bereich ist allein für die Ausgabe dessen verantwortlich was wir sehen, wenn wir in den WordPress Einstellungen auf den Namen unseres Plugins klicken.

Schritt 4:

Diesen Code müsst Ihr nun nur noch mit der Plugin Funktion zusammenführen. Das Ganze sieht dann so aus:

<?php
/*
Plugin Name: Meine Funktionen
Plugin URI: http://flodji.de
Description: Erweiterung meiner functions.php
Version: 1.0
Author: flodji
Author URI: http://flodji.de
License: GPL2
*/

function googlePlusAutor(){
$option_string = get_option('meineFunktionen');
$option = array();
$option = json_decode($option_string, true);
if (!is_singular()) {
echo '<link href="https://plus.google.com/'.stripslashes($option['gplusid']).'/" rel="publisher" />';
} else {
echo '<link href="https://plus.google.com/'.stripslashes($option['gplusid']).'?rel=author" rel="author" />';
}
}
add_action('wp_head', 'googlePlusAutor');
?>
<?php
add_action('admin_menu', 'meineFunktionen_menu');
function meineFunktionen_menu() {
	add_options_page('meineFunktionen Optionen', 'meineFunktionen', 'manage_options', 'meineFunktionen', 'meineFunktionen_options');
}

function meineFunktionen_options () {
	$option_name = 'meineFunktionen';
	if (!current_user_can('manage_options')) {
		wp_die( __('You do not have sufficient permissions to access this page.') );
	}
	if( isset($_POST['gplusid'])) {
		$option = array();
		$option['gplusid'] = esc_html($_POST['gplusid']);
		update_option($option_name, json_encode($option));
		$outputa .= '<div class="updated"><p><strong>'.__('Einstellungen gespeichert.', 'menu' ).'</strong></p></div>';
	}
	$option = array();
	$option_string = get_option($option_name);
	if ($option_string===false) {
		$option = array();
		$option['gplusid'] = array('gplusid'=>true);
		$option_string = get_option($option_name);
	}
	$option = json_decode($option_string, true);
	$outputa .= '
	<div class="wrap">
		<h2>'.__( 'meine Funktionen', 'menu' ).'</h2>
		<form name="form1" method="post" action="">
		<table>
		<tr><td valign="top"><b>'.__("Google Plus ID", 'menu' ).':</b></td>
		<td style="padding-bottom:20px;">
		<input type="text" name="gplusid" value="'.stripslashes($option['gplusid']).'" size="100"><br />
		<span class="description">z.B.: '.htmlentities('123456789132456789123').'</span>
		</td></tr>
		</table>
		<hr />
		<p class="submit">
			<input type="submit" name="Submit" class="button-primary" value="'.esc_attr('Speichern').'" />
		</p>
		</form>
	</div>';
	echo $outputa; 
}
?>

Schritt 5:

Jetzt heißt es nur noch abspeichern und die Datei wieder hochladen. Wie das geht, habe ich Euch ja im letzten Tutorial bereits verraten.

Geschafft. Jetzt hat das Plugin auch einen Menüpunkt im Adminbereich bekommen wo Ihr dann Eure Google Plus ID eintragen könnt.

Wer sich die Arbeit des Tippens ersparen möchte, kann die fertige Beispiel-Datei auch gleich hier herunterladen:

Download

 

Was Ihr beim Google Author Tag noch beachten solltet, erfahrt Ihr hier.

Wie hat Euch dieses WordPress Tutorial gefallen? War es hilfreich und verständlich? Ich freue mich auf Euer Feedback.

5 KOMMENTARE

  1. danke für die kompakte Zusammenstellung. Ich lasse mir meistens Plugins über Freelancer erstellen, aber jetzt weiß ich ein bisschen mehr, um die Leitungen einzuschätzen.

  2. Hallo Florian,

    ich versuche mich gerade mich dem Erstellen eines Plugins. Wie kann man bei deiner Vorlage weitere Felder (z. B. Textfelder und Checkboxen) hinzufügen? Habe es bisher nicht geschafft und wäre für einen Tipp dankbar.

    LG Hans

    • Hallo Hans,

      bitte entschuldige meine späte Antwort.
      Textfelder und Checkboxen sind leider etwas umständlicher zu erklären, daher bieten sich die Kommentare dafür nicht so gut an.
      Ich schaue mal, dass ich einen Beitrag dazu schreibe. Bis dahin kannst Du aber gerne einen Blick in die php Datei meines Plugins flodjiShare werfen. Dort habe ich beides eingebaut. Das Plugin findest Du hier: https://wordpress.org/plugins/flodjishare/

      Ich hoffe das hilft Dir soweit schon mal weiter.

      Gruß
      Flo

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here