Custom Write Panel- Schreibpanel aufmotzen

Wie erstellt man ein leicht benutzbares Schreibpanel, wo man gleich sieht was alles noch auszufüllen ist. Custom write panel erstellt benutzerdefinierte Felder, die gut sichtbar sind und somit auch ungeübten Schreibern ermöglicht nichts zu vergessen.

Custom Write Panel
 Custom Write Panel in WP erstellen

Du magst, dass die Autoren oder auch Du beim Veröffentlichen eines Artikels garantiert XYZ benutzerdefinierte Felder ausfüllt, weil die einfach gebraucht werden.

Klar kannst Du all die erstellen und dann den Autoren eine Liste in die Hand drücken, damit sie es nicht vergessen.

Doch – Liste ist eines-vergessen das andere.
Hilfreich ist da ein Custom Write Panel. Mehrere benutzerdefinierte Felder -fix fertig-untereinander und außerdem kann man noch dazu schreiben wozu dies gut ist und was wo eingegeben werden sollte.

Die Idee dazu stammt nicht von mir. Ich erkläre hier dieses “Plugin”. Der Dank geht an Function .

Du brauchst dazu die functions.php des verwendeten Themes. Nachdem Du diese gesichert hast, kopierst Du untenstehenden Code nach <?php und vor ?> in die functions.php.

Dies ist eine Sache für User, die sich trauen, die schon öfter PHP Code umgeändert haben und vorallem etwas was man machen sollte, damit man als nicht PHPler einfach gleich sieht was da geschieht.

Tun und sehen erleichtern sehr oft das Verständnis für vorher unbekannte Dinge.

Coder finden hier einfach neue Ideen und entwickeln eventuell Neues daraus. Das wäre wunderbar und ich promote auch gerne.

Plugin Custom Write Panel ==>functions.php

Bitte dieses Plugin auch durchlesen. Nur copy&paste nutzt irgendwie gar nichts, weil Du sicher andere Felder benötigst als ich hier zeige. :-)

Zuerst der ganze Code, dann Schritt für Schritt wie Du es für Dich ändern kannst.

Nochmals: Dies in die functions.php nach <?php und vor ?> .

 
/*
Plugin Name: Custom Write Panel
Plugin URI:http://wefunction.com/2008/10/tutorial-creating-custom-write-panels-in-wordpress/
Description: Allows custom fields to be added to the WordPress Post Page
Version: 1.0
Author: Spencer
Author URI: http://wefunction.com
/* ----------------------------------------------*/
 
$new_meta_boxes =
array(
"artikelnummer" => array(
"name" => "artikelnummer",
"std" => "",
"title" => "Artikelnummer",
"description" => "Die Artikelnummer eintragen - nur mehr die Nummer bitte"),
"stueck" => array(
"name" => "stueck",
"std" => "",
"title" => "Stueckzahl",
"description" => "Hier die St&uuml;ckzahl eintragen - nur die Zahl bitte"),
"EuroproStueck" => array(
"name" => "EuroproStueck",
"std" => "",
"title" => "EuroproStueck",
"description" => "Hier nur den Preis eintragen, wenn die St&uuml;ckanzahl  ausgef&uuml;llt wurde"),
"UVP" => array(
"name" => "UVP",
"std" => "",
"title" => "UVP",
"description" => "Hier nur mehr die Jahreszahl eintragen bitte"),
"preisUVP" => array(
"name" => "preisUVP",
"std" => "",
"title" => "preisUVP",
"description" => "Hier nur den Preis eintragen, wenn UVP ausgef&uuml;llt wurde - UVP nicht n&ouml;tig dann leer lassen")
 
);
 
function new_meta_boxes() {
global $post, $new_meta_boxes;
 
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true);
 
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
 
echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
 
echo'<h2>'.$meta_box['title'].'</h2>';
 
echo'<input type="text" name="'.$meta_box['name'].'_value" value="'.$meta_box_value.'" size="25" /><br />';
 
echo'<p><label for="'.$meta_box['name'].'_value">'.$meta_box['description'].'</label></p>';
}
}
 
 
function create_meta_box() {
global $theme_name;
if ( function_exists('add_meta_box') ) {
add_meta_box( 'new-meta-boxes', 'Brazen Post Settings', 'new_meta_boxes', 'post', 'normal', 'high' );
}
if ( function_exists('add_meta_box') ) {
add_meta_box( 'new-meta-boxes', 'Artikelnummer-St&uuml;ckzahl-UVP-Preise, i', 'new_meta_boxes', 'post', 'normal', 'high' );
}
 
}
 
function save_postdata( $post_id ) {
global $post, $new_meta_boxes;
 
foreach($new_meta_boxes as $meta_box) {
// Verify
if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
 
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ))
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ))
return $post_id;
}
 
$data = $_POST[$meta_box['name'].'_value'];
 
if(get_post_meta($post_id, $meta_box['name'].'_value') == "")
add_post_meta($post_id, $meta_box['name'].'_value', $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))
update_post_meta($post_id, $meta_box['name'].'_value', $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
}
}
 
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata');

Custom write panel anpassen==> $new_meta_boxes

Das da

 
"artikelnummer" => array(
"name" => "artikelnummer",
"std" => "",
"title" => "Artikelnummer",
"description" => "Die Artikelnummer eintragen - nur mehr die Nummer bitte"),

ergibt eine neue Box.

Custom Write Panel geändert
 Custom Write Panel ändern

Magst Du jetzt, dass dies “Bildurl” heißt und die Beschreibung darunter auch gleich ändern,dann änderst Du es so.

 
"bildurl" => array(
"name" => "bildurl",
"std" => "",
"title" => "Bildurl",
"description" => "Hier die Adresse zum Bild eintragen- Bild URL hineinkopieren."),

Weitere Meta Box ändern

 
 
"stueck" => array(
"name" => "stueck",
"std" => "",
"title" => "Stueckzahl",
"description" => "Hier die St&uuml;ckzahl eintragen - nur die Zahl bitte"),

Auf die html Entities aufpassen, sonst sieht man *komische Zeichen* im Schreibpanel. ;)

Box dazufügen -weglassen

Am Ende der Zeile die mit description anfängt, siehst Du ein Komata. Aber bei der allerletzten descriptions Zeile keines. Das ist wichtig.

Magst Du bei obigen Beispiel nach “preisUVP” noch eine Meta Box dazufügen, musst Du am Ende der Zeile “description” ein Koma machen und beim nächsten Feld keines mehr.

PHP Fehler sagen Dir da gleich, ob Du ein Koma vergessen oder eines zuviel hast.

Ausgabe gestalten

Liest Du obigen Plugin Code genau durch findest Du:

 
echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
 
echo'<h2>'.$meta_box['title'].'</h2>';
 
echo'<input type="text" name="'.$meta_box['name'].'_value" value="'.$meta_box_value.'" size="25" /><br />';
 
echo'<p><label for="'.$meta_box['name'].'_value">'.$meta_box['description'].'</label></p>';

Hat bis jetzt alles funktioniert, dann sichere Dir die functions.php.

Ich tät an Deiner Stelle nur mal size= 25 ändern und dann schauen was sich da so tut. ;)

Titel der gesamten Box ändern

Custom Write Panel Titel
 Custom Write Panel Titel

Den Titel des gesamten Custom Write Panel zu ändern wäre auch noch wunderbar, denn ich vermut das Deine sollte einfach anders heißen.

Suche im obigen Plugin nach function create_meta_box

 
add_meta_box( 'new-meta-boxes', 'Artikelnummer-St&uuml;ckzahl-UVP-Preise, i', 'new_meta_boxes', 'post', 'normal', 'high' );

Nur das da “Artikelnummer-Stückzahl-UVP-Preise, i “ändern.

Danach speichern und fertig!

Viel Freud damit, weitersagen ausdrücklichst erlaubt und sollten Codern was Neues dazu einfallen, einfach melden.
12 Kommentare zu "Custom Write Panel- Schreibpanel aufmotzen"
  1. Klasse, genauso etwas habe ich gesucht. Jetzt können die Autoren Bilder leichter und schneller eingeben.
    Funktioniert.
    Gruß aus dem Norden von
    Thomas

  2. Sven, hi

    WP 2.7 ==> das bringt all dies -klappt auf klappt zu – und hat schöne Icons und man kann alles zuklappen, dann sieht man nur mehr die Icons,

    nicht dass ich Werbung mache für WordPress 2.7, aber der Adminbereich ist diesmal gut ;)

    lg

  3. was hast du denn fürn wordpress menü? das sieht ja richtig übersichtlich aus!

  4. Hallo,
    super Tip. Bei mir geht es zwar im Backend aber im Artikel wird nichts angezeigt. Ich hab WP 2.7
    Hast du da eine Idee?

  5. Ja Jörg, die benutzerefinierten Felder muss man natürlich im Template abfragen
    einfach so werden die nicht angezeigt – wie denn auch, wenn sie ganz individuell sind

    benutzerdefinierte Felder
    wenn Du hier danach suchst, müßtest Du Hilfe finden
    lg

  6. ja, ich Anfänger. Ich habe mit jetzt das mit der Ausgabe bei dem Beispiel mit den Reisen angekuckt. Ich bekomme das nicht hin. Ich benötige eine Vorlage mit der man eine Liste mit Ergebnissen eintragen kann.
    Soll so ungefähr aussehen:

    Platz Reiter Pferd
    1 Becker Fury
    2 Müller Lassi
    3….
    4….
    5….

    Also hinbekommen habe ich, dass diese ersten 3 Felder mit Überschriften zum ausfüllen bei den neu zu erstellenden Artikeln als Zusatzfelder drinnstehen *froi*

    Das erste Problem war dann allerdings wie bekomme die restlichen 4 Datensätze (Reihen der Ergebnisse) rein. Dann die Formatierung, da es ja bis zu 5 Zeilen mit den Ergebnissen werden sollen sieht das ja ziemlich verwirrend aus wenn alle Felder untereinander stehen würden. Daher steht alles nur untereinander obwohl ich das in Tabellenform gebracht hatte.

    Dann denke ich muss ich in der page.php (das ist doch die für die einzelnen Artikel,oder?) die Ausgabe einfügen. Das habe ich versucht aber hat leider auch nicht funktioniert. Der hat nur die Überschriften angezeigt.

    Könnte mir eventuell hier jemand auf die Sprünge helfen?
    Ich weis es geht vielleicht gar nicht, aber ein Versuch ist es ja wert.

    LG

    Jörg

  7. Hi Jörg ich versuch es mal, doch zu allererst

    die single.php zeigt einzelne Artikel an, die page.php statische Seiten

    ich habe es auf meiner Tutorial to do Liste

    ;)
    lg

  8. Hi,

    gibt es eine Möglichkeit, vers. Input-Felder anzuzeigen?
    Also auch welche als Textarea und evtl. sogar mit WYISWYG-Editor?

  9. Hi,

    kann man die Panels im Admin evtl. auch einer bestimmten Page ID zuweisen?

    So, dass man nur auf der Startseite Einträge ändern kann? Oder gibt es dafür bessere Möglichkeiten bzw. Plugins?

  10. Hallo tolles tutorial!!

    Ich möchte mich Simon in meiner Frage anschliessen:
    ich bräuchte ein feld als Textarea und evtl. sogar mit WYISWYG-Editor?

    wie kann man das machen?
    ich habe mal einfach bei “type” textarea mit cols und rows angegeben – hat abenr nmicht funktioniert…

    Vielen Dank für eine Antwort und sowieso für die vielen Tipps auf deiner seite, man(bzw. frau) merkt halt, dass da eine Frau erklärt!!!

  11. Hallo Irmganr versuchs mal mit TInyMCE Advanced Plugin
    allerdings bin ich skeptisch -aber anschauenswert ist dieses Plugin sicher.

    lg

  12. Hallo , vielen Dank für den tipp, aber den hab ich schon installiert. Oderverstzehe ich dich falsch??

    meine frage ist ja :
    wie erzeuge ich ein mehrzeiliges Eingabe feld?
    (am besten mit editor Möglichkeiten)
    Mit textarea geht es nicht – wie dann?

    Vielen Dank für eine Antwort.