Ich dachte immer, dass es interessant wäre, in der WordPress-Administration die Hintergrundfarbe der Beitragszeilen nach verschiedenen Kriterien ändern zu können. Also habe ich mich umgesehen und einige Tutorials gefunden, um es zu tun. Aber das Schlimme ist, dass jedes Tutorial den gleichen Code hatte, wahrscheinlich ein einfaches Kopieren und Einfügen. Außerdem habe ich nach einigen Tests festgestellt, dass all diese Beiträge unvollständig waren. Aus diesem Grund habe ich mich entschieden, etwas tiefer in die Erklärung einzusteigen, wie man bestimmte Hintergrundfarben zur Beitragszeile hinzufügt. Und dafür werden wir ein neues Plugin erstellen!
Schritt 1: Das Plugin
Ok, also fangen wir an, wir müssen ein Plugin erstellen, wie wir in meinen vorherigen Beiträgen gesehen haben, dies ist der einfachste Teil. Erstellen Sie einen neuen Ordner in wp-content/plugins und nennen Sie ihn „color-my-posts“. Erstellen Sie darin eine neue Datei und rufen Sie sie auf…. „color-my-posts.php“ (glaube bitte nicht, dass ich keine Fantasie habe!). Öffnen Sie diese Datei und fügen Sie diesen Code hinzu:
<?php
/*
Plugin Name: Color My Posts
Plugin URL: http://remicorson.com/color-my-posts
Description: A little plugin to color post rows depending on the posts' status in the administration
Version: 0.1
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
tags: color, customization, administration, corsonr, remi corson
*/
Dadurch wird WordPress einfach mitgeteilt, dass sich in seinem Plugin-Ordner ein neues Plugin namens „Color My Posts“ befindet. Jetzt sollte Ihr Plugin, auch wenn es leer ist, in der Plugin-Liste im Menü „Plugins“ aufgeführt sein. Im nächsten Schritt erstellen wir eine einfache Klasse, um das Plugin zu instanziieren.
Schritt 2: Die Hauptklasse
Da wir in meinem Tutorial zum Hinzufügen von benutzerdefinierten Attributen zu WordPress-Menüs eine Klasse erstellt haben, müssen wir dasselbe tun und eine Klasse erstellen. So geht’s:
class rc_color_my_posts {
/*--------------------------------------------*
* Constructor
*--------------------------------------------*/
/**
* Initializes the plugin
*/
function __construct() {
add_action('admin_footer', array( &$this,'rc_color_my_admin_posts') );
} // end constructor
function rc_color_my_admin_posts(){
/* Be patient ! */
}
}
// instantiate plugin's class
$GLOBALS['color_my_posts'] = new rc_color_my_posts();
Hier erstellen wir eine Klasse namens „rc_color_my_posts“, die einen Konstruktor und eine Funktion namens rc_color_my_admin_posts() enthält. Im Konstruktor hängen wir die Funktion rc_color_my_admin_posts() an admin_footer an. Das bedeutet, dass unsere Funktion beim Laden der Administrationsfußzeile berücksichtigt wird. Jetzt müssen wir nur noch CSS-Code zu unserer Funktion hinzufügen. Dieser Code wird direkt in den Quellcode der WordPress-Admin-Seiten gedruckt.
Schritt 3: Beiträge gestalten
Wie ich bereits sagte, alle Tutorials, die in der WordPress-Administration über das Styling von Postzeilen sprechen, befassen uns nur mit dem Poststatus. Das stimmt, Sie können Beiträge Zeile für Beitragsstatus formatieren, aber nicht nur. Für Interessierte gibt es eine Funktion namens get_post_class() in dem /wp-includes/post-template.php Core-Datei. Nur für alle Fälle – Ändern Sie den Code dieser Datei nicht (zumindest noch vorerst)!
Nun, diese Funktion get_post_class() ist großartig, weil sie für die Bestimmung einer Post-Klasse verantwortlich ist. Diese Funktion wird in der Administration und im Frontend verwendet. So fügen Sie benutzerdefinierten CSS-Code für jede von get_post_class generierte Klasse hinzu:
function rc_color_my_admin_posts(){
?>
<style>
/* Color by post Status */
.status-draft { background: #ffffe0 !important;}
.status-future { background: #E9F2D3 !important;}
.status-publish {}
.status-pending { background: #D3E4ED !important;}
.status-private { background: #FFECE6 !important;}
.post-password-required { background: #ff9894 !important;}
/* Color by author data */
.author-self {}
.author-other {}
/* Color by post format */
.format-aside {}
.format-gallery {}
.format-link {}
.format-image {}
.format-quote {}
.format-status {}
.format-video {}
.format-audio {}
.format-chat {}
.format-standard {}
/* Color by post category (change blog by the category slug) */
.category-blog {}
/* Color by custom post type (change xxxxx by the custom post type slug) */
.xxxxx {}
.type-xxxxx {}
/* Color by post ID (change xxxxx by the post ID) */
.post-xxxxx {}
/* Color by post tag (change xxxxx by the tag slug) */
.tag-xxxxx {}
/* Color hAtom compliance */
.hentry {}
</style>
<?php
}
Da dieser Code nicht kompliziert ist, habe ich Kommentare im Code selbst hinzugefügt. Um Zeilen zu formatieren, indem Sie:
- Poststatus, verwenden Sie .status-xxx, wobei xxx der Post-Status ist
- Autor, verwenden Sie .author-self, um die von Ihnen verfassten Beiträge gezielt anzusprechen, und .author-other für Beiträge, die von anderen Autoren verfasst wurden
- Beitragsformat, verwenden Sie .format-xxx, wobei xxx das Postformat ist
- Beitragskategorie, verwenden Sie .category-xxx, wobei xxx der Kategorie-Slug ist. Sie können auf so viele Kategorien abzielen, wie Sie möchten
- Post-Typ, verwenden Sie .xxx oder .type-xxx, wobei xxx der Post-Typ-Slug ist. Sie können so viele CPT ansprechen, wie Sie möchten
- Beitrags-ID, verwenden Sie .post-xxx, wobei xxx die Beitrags-ID ist. Sie können so viele Beiträge ansprechen, wie Sie möchten
- Post-Tag, verwenden Sie .tag-xxx, wobei xxx der Tag-Slug ist, Sie können auf so viele Tags abzielen, wie Sie möchten
- .hentry wird verwendet, um zu zielen hAtom Einhaltung
Ich habe nicht für alle Klassen Farben festgelegt, aber Sie können es selbst tun und das Plugin so anpassen, dass es so aussieht, wie Sie es wirklich möchten.
Was ist mit Sticky Posts?
Als ich an diesem kleinen Plugin arbeitete, ist mir aufgefallen, dass Sticky Posts keine Klasse hinzugefügt wurden. Zumindest in der Verwaltung. Also ging ich noch einmal in die Datei post-template.php und sah, dass eine .sticky-Klasse zu sticky post hinzugefügt wurde, aber nur, wenn is_home() && !is_paged()… warum ? Das ist wirklich seltsam. Das ist der Grund, warum ich erstellt habe ein Ticket auf WordPress Core Track, um es zu erwähnen. Für diejenigen, die wirklich in der Lage sein wollen, Sticky Posts im Admin zu stylen, fügen Sie einfach diesen Code zur Funktion get_post_class() hinzu, auch wenn ich empfehle, niemals WordPress-Kerndateien zu ändern:
// sticky for Sticky Posts in administration
if ( is_sticky($post->ID) && is_admin() )
$classes[] = 'post-sticky';
Laden Sie das Plugin herunter
Für diejenigen, die das Plugin direkt aus der Box verwenden möchten, ohne es selbst erstellen zu müssen, habe ich das Plugin einfach zum Repository hinzugefügt klicken Sie hier um es herunterzuladen.