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: github.com/bueltge/different-type/zipball/master - 40 kByte
Das Plugin liegt in einer gepflegten Version bei github.com und kann dort besichtigt, geforkt und gezogen werden.
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.
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 971 Beiträge, 19462 Kommentare in 14 Kategorien und 459 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 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.
24. November 2010 um 16:16
Super plugin. Ich bin leider kein Programmierer und kann deshalb nur schwer Anpassungen machen.
Wie kann ich denn im Template eine Anweisung einbauen, die einen alternativen Text ausgibt wenn für die custom fields beim aktuellen post kein Wert eingetragen ist?
Beispiel:
Grundsätzlich will ich die 'additional info' ausgeben. Das funktioniert auch mit dem Code aus der single.php hervorragend.
Aber wenn im Post für dieses Feld kein Wert steht, soll stattdessen the_excerpt angezeigt werden.
Wäre klasse, wenn du dafür ein Codeschnipselchen hättest.
25. November 2010 um 10:08
@Ralf:
folgender Code im Plugin:
if ( 'additional-info' == $type && '' != $value['additional-info'] )
return wpautop( wptexturize($value['additional-info']) );
wird zu:
if ( 'additional-info' == $type && '' != $value['additional-info'] ) {
if ( isset($value['additional-info']) && '' != $value['additional-info'] )
return wpautop( wptexturize($value['additional-info']) );
else
return get_the_excerpt();
}
Teste mal, habe es nicht getestet nur hier schnell geschrieben.
26. November 2010 um 12:49
Hi Frank, danke für den Code.
Habs gerade getestet. Im Ergebnis keine Veränderung zum vorherigen Code.
Wie gehabt wird die vorhandene additional-info ausgegeben. Wenn keine vorhanden, wird nichts ausgegeben.
Es gelingt mir übrigens nicht, eine mal eingetragene additional-info zu löschen. Wenn ich den Feldinhalt lösche und den Post speichere, wird wieder der vorherige Inhalt angezeigt. Ich kann eine vorhandene Info nur mit neuem Content überschreiben.
29. November 2010 um 11:04
@Ralf: könnte ich dort wo du es einsetzt, einen Zugang als Admin haben und Schreibrechte auf die Dateien bekommen, dann kann ich mal debuggen und eine Lösung erstellen?
1. Dezember 2010 um 12:41
Berne. Ich hab's im Moment nur lokal getestet, kann aber am WE was online stellen. Wie kann ich dir die Zugangsdaten schicken?
1. Dezember 2010 um 16:01
@Ralf: mail, siehe Impressum
30. Dezember 2010 um 02:57
Moin Frank,
ein Jahr später auch von mir vielen Dank und gute Wünsche für's neue Jahr!
Ich habe eine Frage zum Plugin, das ich schon seit einigen Monaten erfolgreich einsetze.
Bisher habe ich in der index.php nur diese Zeile stehen:
ID, 'heading'); ?>
Jetzt brauche ich aber zwei weitere "Verschiedene Felder" für eigene Keyword und Beschreibung. Die "Benutzerdefinierten Felder" möchte ich dafür nicht nutzen.
Also hab ich das Plug in mit neuem Namen installiert, und überall different-types durch different-types-keywords ersetzt. Aber im Backend erscheint kein neues entsprechendes Feld.
Schätze, ich mache irgendwo einen grundsätzlichen Fehler. Aber wo?
Vielleicht kannst und willst Du mir einen Hinweis geben...?
Tschüss, alles Gute
Aro
30. Dezember 2010 um 02:58
Die abgeschnittene PHP-Zeile ist:
if ( function_exists('the_DifferentTypeFacts') ) the_DifferentTypeFacts($post->ID, 'heading');
31. Dezember 2010 um 17:11
@Aro: du brauchst kein weiteres Plugin, du kannst einfach neue Felder anlegen. Auf Github.com habe ich das Plugin auch gerade angepasst, so dass der letzte Stand dort zu finden ist.
2. Januar 2011 um 02:09
Hallo Frank,
danke für die Antwort, aber...
Eigentlich wollte ich nur ein Plugin, das ich als eigenes Feld, ruhig einzeilig, mit einem Inhalt versehen kann. Das hat mit der Version 0.1 geklappt, ich hatte nur die obige Zeile in die Index eingefügt.
Davor und dahinter etwass Code, so dass ich für die VG Wort jeweils eine individuelle Zeile eingeben konnte.
Das gleiche wollte ich nun eigentlich für die Keywords und Description machen, aber die Beschreibung sagt mir nicht wirklich, ob und wie das funktioniert. Vielleicht geht es ja auch gar nicht, dass ich im Backend drei Felder "Verschiedene Typen" parallel haben und im Artikel ausgeben kann.
Oder was muss man noch tun, außer den im Kommentar 50 angegebenen Code in die Index zu schreiben?
5. Januar 2011 um 10:39
@Aro: das Plugin hat im Beispiel ja 3 Felder, die sind als Beispiel drin. Genauso kann man jedes andere Feld einbauen. Wenn ich dich richtig verstehe, dann brauchst du das 3 eigene Felder, ohne Editor und alles als textarea, oder? Ansonsten sende mir mal eine Mail mit genauen Anforderungen und ich schaue mal, was es kosten würde; wenn es nur Anpassungen sind, dann ist das ja wesentlich weniger Aufwand als ein neues Plugin für dich.
27. Mai 2011 um 12:12
Hallo Frank,
auch wenn ich mich schon öfter auf Deinen Seiten herumgetrieben habe, bin ich leider erst jetzt auf dieses Plugin gestoßen.
Damit ist ja alles mögliche machbar, wovon man bisher nur träumen konnte, wie z.B. mehrspaltige Layouts usw.!
Da die Frage von think123 wahrscheinlich noch mehr Leute interessiert und die Antwort bisher nicht in den Kommentaren steht, geb ich sie mal...
In der PHP-Datei folgenden Abschnitt suchen:
add_meta_box( 'different_types',
__( 'Different Types', FB_DT_TEXTDOMAIN ),
array( &$this, 'meta_box' ),
'post', 'normal', 'high'
);
kopieren und unmittelbar darunter einfügen, dann 'post' durch 'page' ersetzen.
Schon funktioniert das auch auf Seiten.
So, jetzt muss ich aber erstmal noch ein bisschen mit dem Plugin spielen...;-)
Hast Du eventuell noch einen Tipp, wie ich den TinyMCE-Editor anpassen kann?
Da fehlt mir die Möglichkeit, auf HTML umzuschalten und 'Bild einfügen'.
30. Mai 2011 um 09:47
@ Bernhard Wenn fertig, würde ich gerne mal ein Beispiel sehen, danke.
31. Mai 2011 um 23:13
Hallo Ramona,
erstmal der Zwischenstand:
auf die Euphorie ist die Ernüchterung gefolgt, dass es mir nicht gelungen ist, die Funktion zum Wechseln zwischen Standard-Editor und TinyMCE einzubauen.
Außerdem hätte es mir für ein aktuelles Projekt sehr gut gefallen, den Editor mit den Listen zu verbinden - auch da habe ich es nur geschafft, Fehlermeldungen zu produzieren...
(was ich aktuell brauche, habe ich im WordPress-Forum beschrieben...)
"Bild hochladen / einfügen" ist kein Problem, da das mit der Schaltfläche über dem Standard-Editor funktioniert, wenn man vorher in den TinyMCE von Different-Types geklickt hat.
Ob ich die Website vorzeige, an der ich gerade sitze, weiß ich noch nicht, da der Kunde Wünsche hat, die ich ihm bisher nicht ausreden kann (wenn die Navigation als Laufschrift über den Bildschirm flackern soll, dann fühle ich mich ins vergangene Jahrtausend zurückversetzt...).
Aber ich habe aktuell auch noch andere Sites, bei denen dieses Plugin durchaus wertvoll sein könnte. Die werde ich gerne verlinken, sofern Frank damit einverstanden ist.
(vielleicht komme ich ja auch irgendwann endlich mal dazu, meine eigene Site komplett zu erneuern, was wohl schon seit geraumer Zeit dringend geboten wäre... - auch da wird dieses Plugin mit großer Wahrscheinlichkeit zum Einsatz kommen)
Abschließend noch ein Beispiel, wo mir dieses Plugin sehr gut gefallen hätte:
http://www.arra-neckaralb.de/- da ist die rechte Spalte noch umständlich mittels Widgets realisiert...1. Juni 2011 um 08:47
@Bernhard: das Hochladen von Bildern spricht immer den Editor an, der aktiv ist - ist also korrekt so. HTML/Visuell umschalten geht ebenso, dazu muss aber das JS erweitert werden. Um den Editor mit Listen zu verbinden, musst du eine Vorgabe treffen, am besten vermutlich pro Listpunkte eine Box oder eben pro Zeile wie im Beispiel. Das Plugin ist ja wirklich nur ein Bsp. wie man erweitert, ansprechen kann man alles - page/post/custom_post_type - und damit ist dies auf alle bereiche in WP anzuwenden, die irgendwie mit Meta Boxen arbeiten.
Verlinken - immer gern, diese Armut ist ja schon traurig genug und die letzten paar Links im Web sind erwünscht.
11. Juni 2011 um 20:59
Hallo Frank,
ich hatte mich nur wenige Minuten damit beschäftigt, den TinyMCE mit den Listen zu verbinden. Da ich zu dem Zeitpunkt noch nicht raus hatte, dass das "Bild hochladen / einfügen" funktioniert, hatte ich das Bild von Hand hinein kopiert, bzw. die entsprechende HTML-Zeile. Das kann natürlich nicht klappen, da der TinyMCE die Sonderzeichen umwandelt. Da ich immer nur den HTML-Editor nutze, hatte ich da nicht dran gedacht...
Um die Erweiterung des JS zum Umschalten zwischen HTML und Visuell werde ich mich kümmern, sobald ich etwas Luft habe. Das ist aber wohl eher mir wichtig, als meinen Kunden...
Da es bei den aktuell anstehenden Projekten ausschließlich darum geht, Bilder außerhalb des eigentlichen Content-Bereichs einzufügen und es problemlos möglich ist, nicht benötigte Klassen etc. zu entfernen, die WordPress automatisch schreibt, passt es so wie es ist.
Aber ich werde mich auf jeden Fall weiter damit beschäftigen, wenn die Auftragslage das zulässt, da ich denke, dass es da noch unheimlich viele Möglichkeiten gibt, dieses Plugin sinnvoll einzusetzen...
Aber gleich noch eine Frage: gibt es eine Möglichkeit, dass die zusätzlichen Felder im Backend nur angezeigt werden, wenn ein bestimmtes Template ausgewählt wurde?
Verlinken: ich frag lieber, bevor ich es tue, da m.E. die Kommentare in Blogs viel zu oft missbraucht werden, um mal schnell Backlinks aufzubauen...
15. Juni 2011 um 14:45
@Bernhard: die bsphafte Lösung hier ist natürlich in Unmengen erweiterbar, was wir fast täglich tun. Links sind erwünscht, wenn sie Mehrwert bieten und nicht nur dem Linkaufbau. Wenn du die Templates an Seiten meinst, dann kenne ich dazu keine Lösung. Du müsstest ja beim Auswählen via Ajax die Boxen de/aktivieren um das zu realisieren.