WordPress 2.6.2 Mediathek optimieren

WordPress ist für einen Blog in meinen Augen das ideale Werkzeug. WordPress ist leicht zu installieren, läßt sich wunderbar mit Plugins erweitern und kann bei Bedarf auch noch indivuell angepasst werden.

Im aktuellen Fall bereite ich einen existierenden WordPress-Blog für die Nutzung durch andere Autoren vor. Der Blog selbst läuft in der deutschen WordPress-Version 2.6.2 und hat die üblichen Plugins.

wp-optimieren

Damit ein anderer Autor neue Artikel als Vorschlag einstellen kann, bietet es sich an, dass man ihm die Rolle als „Mitarbeiter/Contributor“ zuweist. Doch nach dem ersten Test stellte ich sofort fest, dass die Berechtigungen nicht optimal gestaltet waren.

Zum einem verweigerte WordPress dem Benutzer den Media-Upload und zum anderen (das stellte ich nach Lösung des ersten Problems fest) durfte der User die Bilder anderer User löschen.

Nun ja. Ich bin ja kein Dummer und eigentlich ganz clever, also hab ich mich mal auf die Suche gemacht, um das WordPress-Optimierungs-Problem zu lösen.

Zur allgemeinen Info… Ich verwende einen handelsüblichen FTP-Client und zum Coden in PHP den phpDesigner (natürlich lizenziert, weil selbst bezahlt!).

Anzeige: WordPress-Programmierung mit dem HTML5 Builder lösen

Also… Die Berechtigungen einer Benutzerrolle in WordPress ist recht simpel. Es gibt eine Reihe von Berechtigungen, die jeder Benutzerrolle zugewiesen sind. Der Media-Upload ist dabei eine eigene Berechtigung mit dem Namen „upload_files“.

Berechtigungen für Benutzerrollen in WordPress kann man knallhart direkt in der Datenbank ändern. Wer sich die Struktur schon mal angeschaut wird jedoch feststellen, dass dies wahrlich kein schöner Anblick ist. Sicherlich perfekt für ein Blog-System umgesetzt, jedoch für den schnellen Handgriff weniger geeignet.

Aber es gibt ja tolle Plugins für jede erdenkliche Aufgabe in WordPress. Ein einfaches aber prima Tool für die Verwaltung der Benutzerrollen und -berechtigungen habe ich mit „role-Manager“ gefunden.

„role-Manager“ runterladen, installieren und Benutzerrolle „contributor“ erweitern. Auch bei jeder Benutzer den man ändern will, kann man die Berechtigungen noch individuell setzen. Somit wäre Problem 1 also gelöst. Mein Benutzer vom Typ „Mitarbeiter/Contributor“ darf Bilder in WordPress hochladen.

Damit ergab sich dann jedoch ein zweites Problem. Der Benutzer darf zwar jetzt prima hochladen, aber er darf auch alle Media-Dateien löschen… Ganz schlecht, wenn man es richtig machen will. Erkennen könnt ihr die fehlerhafte Berechtigung hier: Login als Mitarbeiter > Dashboard > Verwalten >Mediathek. Jedes Bild hat eine CheckBox die durch Aktivierung zum Löschen verwendet werden kann.

Auf der Suche nach der Quelltextstelle schaute ich mir die korrekte Arbeitsweise bei den Artikeln an. Dort ist das Prinzip schon umgesetzt, dass ein Mitarbeiter nur seine eigenen Artikelentwürfe löschen darf. Also rein in den Quelltext und suchen. Folgendes findet man in der WordPress-Datei „edit-post-rows.php“:

<th scope="row" class="check-column">
  <?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?>
    <input type="checkbox" name="delete[]" value="<?php the_ID(); ?>" />
  <?php } ?>
</th>

In der WordPress-Datei „edit-attachment-rows.php“, wo das Löschen der Media-Dateien niedergeschrieben steht, findet man jedoch den Freifahrtsschein:

<th scope="row" class="check-column">
  <input type="checkbox" name="delete[]" value="<?php the_ID(); ?>" />
</th>

Also hab ich einfach mal das komplette Stück Quelltext da reingesetzt und es funktionierte. Der Benutzer sieht in der Mediathek nicht mehr die Checkbox zum Löschen.

Aber es gibt noch eine zweite Stelle, wo man Bilder löschen kann! Und zwar beim Schreiben eines Artikels und der dortigen Mediathek-Funktion bei „Bild hinzufügen“. Der Löschen-Link ist etwas versteckter, aber auch leicht zu entfernen. Im Ordner „wp-admin/includes“ befindet sich die Datei „media.php“. Packt einfach jeweils 2 Schrägstriche vor diese Zeilen und weg ist der Löschen-Link:

//if ( $delete )
//	$delete = "<a href=\"#\" class=\"del-link\" onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __('Delete') . "</a>";

Ob das nun der allerkorrekteste Weg war weiß ich nicht, aber da lass ich mich gern von euch belehren.

In diesem Sinne weiterhin viel Spaß mit WordPress 🙂

Gruß Micha

3 Gedanken zu „WordPress 2.6.2 Mediathek optimieren“

  1. Hallo Micha,

    ist das in der neuesten 3.12 WP Version immer noch so nötig und möglich es zu ändern ? Mich nervt dies schon mit den Bildern 🙁

    Gruss Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.