Für Menschen · Seien Sie begeistert und Sie werden begeistern !

Heute ist er nun da, der letzte Tag im Kalender und der letzte Tag, der mich zwingt, jeden Tag einen Beitrag zu veröffentlichen. Nicht selten habe ich über Nacht noch einen kleinen Beitrag geschrieben um die Leser am kommenden Morgen mit einem neuen Türchen zu beglücken. Nicht nur Kinder mögen die Überraschung am Morgen beim Öffnen eines neuen Türchens. Für mich ist nun erst mal Pause, andere Themen sind wichtiger und nur wenige werden vermutlich diesen Beitrag hier lesen; ist doch heute Weihnachten. Mir bleibt nur noch zu sagen:
Alles liebe und Gute, die herzlichsten Wünsche, ein friedliches Weihnachtsfest und einen guten Rutsch in das neue Jahr wünsche ich allen Lesern, allen Kunden, allen netten Kontakten und jedem, der irgendwie Mensch ist und mit mir zu tun hatte. Ich freue mich auf ein neues Jahr mit euch und harre der Dinge, die uns im neuen Jahr erreichen werden.

Als kleines Präsent zum heiligen Abend heute habe ich euch ein Plugin erstellt, was euch zum einen zusätzliche Felder in den Bereich Schreiben von WordPress bringt, was euch zeigt, wie einfach man den Bereich erweitern kann und was nach belieben von euch genutzt werden darf.
Das Plugin bringt 3 neue Felder in einer Metabox mit:
ul
Jedes dieser Felder kann gezielt im Template des Themes eingesetzt werden, hat also einen Template Tag, der die Ausgabe steuert. Nur wenn es in diesem Feld Daten gibt, dann werden sie auch ausgegeben. Im folgenden ein Beispiel, der die drei neuen Felder ausgibt.
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><?php the_title(); ?></h2>
<h3><?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post->ID, 'heading'); ?></h3>
<div class="entry">
<?php the_content('<p class="serif">Read the rest of this entry »</p>'); ?>
<?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post->ID, 'additional-info'); ?>
<?php if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post->ID, 'listdata'); ?>

Das Plugin soll als Vorlage dienen, wer also mag, der passt es an und schafft eine Oberfläche, in der sich die Autoren wohl fühlen, keine Pflege der benutzerdefinierten Felder.
Das Plugin sorgt dafür, dass die Metaboxen "Benutzerdefinierte Felder" und "Trackbacks" nicht mehr da sind (remove_meta_box()); auch das als Beispiel für die Nutzung. Zu jedem der genutzten Code-Schnipsel im Plugin gibt es hier im Blog einen Beitrag und so sollte man damit klar kommen. Im folgenden der Code ohne Zusatzfiles und im Anschluss das Plugin als Download, inkl. readme, Sprachfiles für deutsche User und die nötigen Scripte.
<?php
/**
* @package Different Type
* @author Frank Bültge
* @version 0.1
*/
/*
Plugin Name: Different Type
Plugin URI: http://bueltge.de/
Description: Add different types to posts
Author: Frank Bültge
Version: 0.1
License: GPL
Author URI: http://bueltge.de/
Last change: 24.12.2009 00:00:00
*/
/**
* Example for use outside the loop:
* <?php the_DifferentTypeFacts($post->ID); ?>
* @param $id Integer - Post-ID
* @param $type String - heading, additional-info, listdata (default is ''-empty)
*
* Example: <?php the_DifferentTypeFacts($post->ID, 'heading'); ?>
*/
//avoid direct calls to this file, because now WP core and framework has been used
if ( !function_exists('add_action') ) {
header('Status: 403 Forbidden');
header('HTTP/1.1 403 Forbidden');
exit();
}
if ( function_exists('add_action') ) {
//WordPress definitions
if ( !defined('WP_CONTENT_URL') )
define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
if ( !defined('WP_CONTENT_DIR') )
define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
if ( !defined('WP_PLUGIN_URL') )
define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
if ( !defined('WP_PLUGIN_DIR') )
define('WP_PLUGIN_DIR', WP_CONTENT_DIR.'/plugins');
if ( !defined('PLUGINDIR') )
define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH. For back compat.
if ( !defined('WP_LANG_DIR') )
define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages');
// plugin definitions
define( 'FB_DT_BASENAME', plugin_basename(__FILE__) );
define( 'FB_DT_BASEDIR', dirname( plugin_basename(__FILE__) ) );
define( 'FB_DT_TEXTDOMAIN', 'different-types' );
}
if ( !class_exists( 'DifferentType' ) ) {
class DifferentType {
// constructor
function DifferentType() {
if (is_admin() ) {
add_action( 'admin_init', array(&$this, 'on_admin_init') );
add_action( 'wp_insert_post', array(&$this, 'on_wp_insert_post'), 10, 2 );
add_action( 'init', array(&$this, 'textdomain') );
register_uninstall_hook( __FILE__, array(&$this, 'uninstall') );
add_action( "admin_print_scripts-post.php", array($this, 'enqueue_script') );
add_action( "admin_print_scripts-post-new.php", array($this, 'enqueue_script') );
add_action( "admin_print_scripts-page.php", array($this, 'enqueue_script') );
add_action( "admin_print_scripts-page-new.php", array($this, 'enqueue_script') );
}
}
// active for multilanguage
function textdomain() {
if ( function_exists('load_plugin_textdomain') )
load_plugin_textdomain( FB_DT_TEXTDOMAIN, false, dirname( FB_DT_BASENAME ) . '/languages' );
}
// unsintall all postmetadata
function uninstall() {
$all_posts = get_posts('numberposts=0&post_type=post&post_status=');
foreach( $all_posts as $postinfo) {
delete_post_meta($postinfo->ID, '_different-types');
}
}
// add script
function enqueue_script() {
wp_enqueue_script( 'tinymce4dt', WP_PLUGIN_URL . '/' . FB_DT_BASEDIR . '/js/script.js', array('jquery') );
}
// admin init
function on_admin_init() {
if ( !current_user_can( 'publish_posts' ) )
return;
add_meta_box( 'different_types',
__( 'Different Types', FB_DT_TEXTDOMAIN ),
array( &$this, 'meta_box' ),
'post', 'normal', 'high'
);
// remove meta box for trackbacks
remove_meta_box('trackbacksdiv', 'post', 'normal');
// remove meta box for custom fields
remove_meta_box('postcustom', 'post', 'normal');
}
// check for preview
function is_page_preview() {
$id = (int)$_GET['preview_id'];
if ($id == 0) $id = (int)$_GET['post_id'];
$preview = $_GET['preview'];
if ($id > 0 && $preview == 'true') {
global $wpdb;
$type = $wpdb->get_results("SELECT post_type FROM $wpdb->posts WHERE ID=$id");
if ( count($type) && ($type[0]->post_type == 'page') && current_user_can('edit_page') )
return true;
}
return false;
}
// after save post, save meta data for plugin
function on_wp_insert_post($id) {
global $id;
if ( !isset($id) )
$id = (int)$_REQUEST['post_ID'];
if ( $this->is_page_preview() && !isset($id) )
$id = (int)$_GET['preview_id'];
if ( !current_user_can('edit_post') )
return;
if ( isset($_POST['dt-heading']) && $_POST['dt-heading'] != '' )
$this->data['heading'] = esc_attr( $_POST['dt-heading'] );
if ( isset($_POST['dt-additional-info']) && $_POST['dt-additional-info'] != '' )
$this->data['additional-info'] = $_POST['dt-additional-info'];
if ( isset($_POST['dt-listdata']) && $_POST['dt-listdata'] != '' )
$this->data['listdata'] = esc_attr( $_POST['dt-listdata'] );
if ( isset($this->data) && $this->data != '' )
update_post_meta($id, '_different-types', $this->data);
}
// load post_meta_data
function load_post_meta($id) {
return get_post_meta($id, '_different-types', true);
}
// meta box on post/page
function meta_box($data) {
$value = $this->load_post_meta($data->ID);
?>
<table id="dt-page-definition" width="100%" cellspacing="5px">
<tr valign="top">
<td style="width:20%;"><label for="dt-heading"><?php _e( 'Subtitle:', FB_DT_TEXTDOMAIN ); ?></label></td>
<td><input type="text" id="dt-heading" name="dt-heading" class="heading form-input-tip" size="16" autocomplete="off" value="<?php echo $value['heading']; ?>" tabindex="6" style="width:99.5%"/></td>
</tr>
<tr valign="top">
<td><label for="dt-additional-info"><?php _e( 'Additional information:', FB_DT_TEXTDOMAIN ); ?></label></td>
<td><textarea cols="16" rows="5" id="dt-additional-info" name="dt-additional-info" class="additional-info form-input-tip code" size="20" autocomplete="off" tabindex="6" style="width:90%"/><?php echo wpautop( $value['additional-info'] ); ?></textarea>
<table id="post-status-info" cellspacing="0" style="line-height: 24px;">
<tbody>
<tr>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr valign="top">
<td><label for="dt-listdata"><?php _e( 'Listdata:', FB_DT_TEXTDOMAIN ); ?></label></td>
<td><textarea cols="16" rows="10" id="dt-listdata" name="dt-listdata" class="listdata form-input-tip" size="20" autocomplete="off" tabindex="6" style="width:99.5%"/><?php echo $value['listdata']; ?></textarea><br /><small><?php _e( 'One list per line', FB_DT_TEXTDOMAIN ) ?></small></td>
</tr>
</table>
<?php
}
// return facts incl. markup
function get_DifferentTypeFacts($id, $type, $value) {
if (!$value)
return false;
if ( $type == '' )
return false;
if ( 'heading' == $type && '' != $value['heading'] )
return $value['heading'];
if ( 'additional-info' == $type && '' != $value['additional-info'] )
return wpautop( wptexturize($value['additional-info']) );
if ( 'listdata' == $type && '' != $value['listdata'] ) {
$return = '';
$listdatas = preg_split("/\r\n/", $value['listdata'] );
foreach ( (array) $listdatas as $key => $listdata ) {
$return .= '<li>' . trim($listdata) . '</li>';
}
return '<ul>' . $return . '</ul>'. "\n";
}
}
// echo facts, if exists
function DifferentTypeFacts($id, $type, $string) {
if ( $id ) {
$value = $this->load_post_meta($id);
echo $this->get_DifferentTypeFacts($id, $type, $value);
}
}
} // End class
// instance class
$DifferentType = new DifferentType();
// use in template
function the_DifferentTypeFacts($id, $type = '', $string = '') {
global $DifferentType;
$DifferentType->DifferentTypeFacts($id, $type, $string);
}
} // End if class exists statement
?>
Download als zip-Datei: different-type.zip - 40 kByte
Ich wünsche viel Spass damit und vielleicht wird das einen oder andere Projekt mit WordPress damit in diesem Bereich ein wenig klarer und logischer für die Autoren.
Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 892 Beiträge, 16496 Kommentare in 14 Kategorien und 450 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet.
Design und Code ist unter Copyright
© 2001 - 2010 bueltge.de [by:ltge.de]
24. Dezember 2009 um 07:39
Hallo Frank,
ich wünsche Dir auch Frohe Weihnachten und ein glückliches Neues Jahr !
glg
Uwe
24. Dezember 2009 um 09:46
Frohe und besinnliche Festtage!
24. Dezember 2009 um 10:16
Frohes und besinnliches Weihnachtsfest und viel, viel Gesundheit!
Liebe Grüße
24. Dezember 2009 um 11:33
Hallo Frank,
das ist das absolute Highlight deiner Advents-Posts!!! Das wird mir bestimmt oft helfen. Vielen Dank für all deine Mühen.
So, nu weiter mit Weihnachtsbaumschmücken...
24. Dezember 2009 um 12:01
Danke Frank für deine guten Beiträge in diesem Jahr, danke dass du diesen Blog betreibst und danke das du diesen Monat so fleißig warst. Ich habe mich über jedes einzelne Türchen gefreut. Mach dir ein schönes Fest und Rutsch gut ins neue Jahrzehnt.
24. Dezember 2009 um 12:11
Frohe Weihnachten und besinnliche Tage wünsch ich Dir. Nettes Plugin und werd ich mir auch mal genauer anschauen, da ich ziemlicj viel mit benutzerdefinierten Feldern arbeite könte das was für mich sein.
24. Dezember 2009 um 12:47
Vielen Dank für die tollen Tipps, Codeschnippsel und Plugins und ein Schönes Weihnachtsfest!
24. Dezember 2009 um 12:56
Oh nettes Plugin, dankeschön.
Dir und allen Lesern ein besinnliches Fest!
24. Dezember 2009 um 14:38
bei uns in frankfurt taut es. ich wünsche ein schönes weihnachtsfest und ein gutes neues jahr.
24. Dezember 2009 um 14:47
24 mal Danke für diesen etwas anderen Adventskalender.
24. Dezember 2009 um 14:58
Dir ein besinnliches Weihnachten, Frank, und danke für dein geteiltes Wissen das ganze Jahr über!
Gruß Oli
24. Dezember 2009 um 15:06
Lieber Frank,
Dir und Deinen Angehörigen ein fröhliches Weihnachtsfest.
Vielen Dank für Deinen vielen guten Tipps und Plugins.
Beste Grüße
Dieter
24. Dezember 2009 um 15:38
Hallo Frank,
auch Dir wünsche ich ein besinnliches, friedvolles und erholsames Weihnachtsfest im Kreise Deiner Liebsten
Liebe Grüße, Florian
25. Dezember 2009 um 01:54
Das ist wirklich eine ganz große 24 - toll. Auch danke für das schöne Jahr voller wertvoller Anregungen. Ich habe in diesem Jahr wohl den größten Sprung in Sachen WP nach vorn gemacht. Gib mir noch 10 weitere Jahre und ich hole dich ein
. Viel Freude und Ruhe und Gemütlichkeit und Schnee und .... na du weißt schon
.
26. Dezember 2009 um 06:57
Danke für Deine Arbeit, Ideen und Anregungen. Heinrich
26. Dezember 2009 um 16:52
Hallo Frank, vielen Dank! Das reimt sich nicht nur, sondern kommt auch noch von Herzen…
Mit diesem Plugin lieferst Du mir die mindestens 134,5ste Inspiration und Lernvorlage (danke, danke, danke!) in diesem nun scheidenden Jahr. Möge es für Dich und Deine Lieben schön zu Ende gehen!
Herzliche Grüße,
Caspar
26. Dezember 2009 um 21:34
Hallo!
Ich glaube, das ist genau das, was ich gesucht habe.
Werde es mir mal anschauen, vielen Dank schonmal!
27. Dezember 2009 um 10:47
Vielen Dank für das Plugin, das ich noch nicht ausprobiert habe. Weil: Das Twitter-Plugin nutzt benutzerdef. Felder. Wenn die nun durch dein Plugin weg sind, wird Twitter keine Posts mehr aus dem Blog versenden?
27. Dezember 2009 um 18:16
@Ramona: dann die Zeile auskommentieren:
remove_meta_box('postcustom', 'post', 'normal');
28. Dezember 2009 um 11:15
Hi,
vielen vielen Dank dafür. Nachträglich wünsch ich schöne Weihnachten und hoffe, dass dir die Bücher gefallen!!
viele Grüße
Basti
29. Dezember 2009 um 18:42
Auch dir wünsche ich einen guten Rutsch ins neue Jahr. Vielen Dank für die Mail von dir. Also nicht zu doll feiern
Lg Benjamin
1. Januar 2010 um 10:44
ich wünsche ein schönes und friedliches neue jahr und vielen dank für die tolle arbeit die du für wordpress leistest. mögest du weiter so produktiv im neuen jahr sein und nicht den spass an deinem tun verlieren.
1. Januar 2010 um 12:31
Auch vom Feuerspucker Rick ein frohes neues Jahr 2010. Vielen Dank für die vielen tollen Infos die man hier lesen kann. Freue mich schon auf die neuen Beiträge im neuen Jahr 2010!
1. Januar 2010 um 19:43
Könnte genau das sein, was ich schon länger gesucht habe. Dank Dir.
Und FROHES NEUES JAHR!
3. Januar 2010 um 15:10
UM HIMMELS WILLEN, FRANK! Das ist der Stein der Weisen, den ich brauche! Dafür gibt’s was von deiner Wunschliste!
4. Januar 2010 um 06:51
Wie immer bin ich mal wieder viel zu spät. So bleibt mir nur dir ein gutes neues Jahr zu wünschen! Ohne dich und deine fantastische Arbeit gäbe es meinen Blog sehr wahrscheinlich nicht mehr. Oft fand ich Hilfe bei dir wenn ich nicht mehr weiter wusste, was verdammt oft vorkommt.
Das mit dem subtitle hört sich interessant an. Werde versuchen dies für meinen Blog zu nutzen.
Noch mal alles gute für die Zukunft!
4. Januar 2010 um 18:06
Vielen Dank für die Informationen
Frohes Neues Jahr!
5. Januar 2010 um 17:06
Danke für die Info. Bin erst jetzt auf Ihre Seite gestossen und finde Ihre Beiträge und das Fachwissen wirklich sehr gut.
Werde Ihre Seite auf jeden Fall weiter empfehlen.
7. Januar 2010 um 13:31
Frohes neues Jahr und danke für Code und Plugin Download! Sehr praktisch, grad weil ich gern mehr mit benutzerdefinierten Feldern arbeiten möchte.
7. Januar 2010 um 19:54
Ich fände es ja lustig, wenn WordPress etwas für Dragon naturally speaking machen könnte. Wobei das Programm ja auch so schon alles kann. Aber eine Analyse der wichtigsten Worte im Blog, die man dem Programm so beibringen kann.
9. Januar 2010 um 10:56
auch von mir alles gute in 2010.
10. Januar 2010 um 12:37
Ich habe selber einmal die Felder genutzt, um zum Beispiel Bild individuell auf die Startseite zu setzen, aber leider ist es am Quelltext gescheitert. Mittlerweile nutze ich nur noch wenige Plugins, um WordPress nicht unnötig zu verlangsamen.
12. Januar 2010 um 17:49
Frank, Dein Text oben endet mit: [...] Ich freue mich auf ein neues Jahr mit euch und hadere der Dinge, die uns im neuen Jahr erreichen werden.[...]
Du meinst wahrscheinlich 'harre' - oder? ... ein wundervoller freud'scher Verschreiber ?! - hoffe nicht.
Anyway - Danke auch von mir als newcomer - Du bist ein wahre Fundgrube, Frank.
Alle Gute für das was kommt ...
12. Januar 2010 um 19:36
@Christina: Danke für Hinweis und Wünsche.
7. Februar 2010 um 16:15
Hallo Frank und DANKE für das Plugin
habe es mir leicht angepasst und nun scheitere ich daran das der Inhalt der Felder leider nicht mit im RSS Feed ausgegeben wird, habe mich schon dusselig gelesen was Feed Output angeht aber irgendwie fehlt mir der Stein des Anstoßes auf den richtigen Lösungsweg zu kommen.
WP gibt ja leider immer nur den reinen Content per RSS aus.
Gruß Sven
8. Februar 2010 um 09:25
@Sven: Du musst den content mit deinen Angaben ergänzen, dann ist er auch im Feed; hier mal ein Beitrag mit einem Beispiel, dort werden eben nur die Custom Fields ergänzt, wenn es sich um den Feed handelt.
8. Februar 2010 um 23:07
Vielen Dank für die Antwort und den Link. Und ich hab mir schon ein Wolf gesucht in den ganzen Dateien für den Feed Output und einiges probiert was aber nicht zufriedenstellend war. Da ich auch dein CopyFeed Plugin testweise einsetze gestaltet sich das schwieriger als ich dacht da sich das CopyFeed Plugin irgendwie "vordrängelt" mit seinem Output und dann erst meine Daten aus den Benutzerdefinierten Felder ausgegeben wird. Als nicht "PHP'ler" mit geringen Kentnissen muss ich zwar viel nachschlagen aber komme trotzdem meist zu gewünschten Erfolg dank Informationsquellen wie deinem Blog.
8. Februar 2010 um 23:55
@Sven: ©Feed macht nix anderes, es ergänzt einfach nur den content mit Hilfe des Filters
add_filter('the_content', 'mein_neuer_inhalt'); daher sollte das gehen. Eventuell kannst du ja noch einen Wert 9 mitgeben, da das Plugin den Standard nutzt, also 10. Damit sollte dein Hook in den Filter wie folgt aussehen:add_filter('the_content', 'deine_zusatzinhalt_und_content', 9)9. Februar 2010 um 23:22
Vielen Dank für die schnelle Antwort Frank, ich werde mich wenn ich wieder etwas Zeit hab darüber hermachen. Es ist leider immer etwas ärgerlich das man für den vollen Content-Output via Feed zu solchen Lösungswegen greifen muss und WordPress nicht von Haus aus gleich den vollen Output anbietet.
9. Februar 2010 um 23:40
@Sven: WordPress zieht ja den vollen content, du erweiterst den ja nur, aber auf Ebene Frontend. Eventuell kanst ja via Filter und Action-Hook viel einfacher ergänzen.
12. Februar 2010 um 20:25
Kann ich das Plugin auch i-wie beim erstellen von neuen Seiten benutzen?
Gruß
think123
12. Februar 2010 um 23:38
@think123: dazu muss es ein wenig erweitert werden, denn aktuell werden die Metaboxen nur bei posts eingehakt, nicht bei pages. Sollte aber schnell gehen; dazu gibt es hier sicher den Code in einem der Beiträge.