2012-04-04 4 views
5

Ich habe ein Wp-Netzwerk installiert mit Benutzern, die Seiten in jeder Site erstellen können.Wie kann man den Titel der Seite in wp-admin deaktivieren?

Jede dieser Seiten erhält einen Platz im primären Menü, und nur ein Benutzer kann dieses Menü erstellen.

Ich möchte einen Benutzer nur erstellen, um den Inhalt der Seiten, aber nicht den Titel bearbeiten zu können.

Wie kann ich den Titel der Seite, die bearbeitet werden soll, im Admin-Menü für einen bestimmten Benutzer oder (weitaus besser) für eine Funktion deaktivieren?

Ich dachte, nur eine Möglichkeit, dass Admin-CSS ist das Bearbeiten der Titel Textbox zu verbergen, aber ich habe zwei Probleme:

  1. Ich mag die Dinge hide-css nicht.
    1. Ich weiß nicht, wo ist der Admin CSS.
    2. Ich kenne PHP, aber weiß nicht, wie man ein css-Felle zu einem Element für eine Fähigkeit hinzufügen.

How do I want it to be

Antwort

7

Sie sollten auf jeden Fall CSS verwenden, um die div # titlediv zu verstecken. Sie möchten, dass der Titel im Markup angezeigt wird, damit die Formularübermittlung, Validierung usw. reibungslos funktioniert.

Einige Elemente, die Sie müssen wissen, diese Lösung zu implementieren:

  1. current_user_can() ist eine Boolesche Funktion, die die aktuellen protokolliert prüft, ob in Benutzer eine Fähigkeit oder Rolle.
  2. Sie können den Stil über die Aktion admin_head hinzufügen oder wp_enqueue_style, wenn Sie ihn in einer separaten CSS-Datei speichern möchten.

Hier ist ein Code-Snippet, das die Aufgabe erledigen wird, platzieren Sie es, wo Sie fit finden, funktioniert.php in Ihrem Thema funktioniert. Ich würde es in einem Netzwerk aktiviert Plugin setzen, wenn Sie verschiedene Themen in Ihrem Netzwerk verwenden sind:

<?php 

add_action('admin_head', 'maybe_modify_admin_css'); 

function maybe_modify_admin_css() { 

    if (current_user_can('specific_capability') { 
     ?> 
     <style> 
      div#titlediv { 
       display: none; 
      } 
     </style> 
     <?php 
    } 
} 
?> 
+0

Dies kann funktionieren, um das Menü Seite> Neue Seite in der Admin-Menüleiste auszublenden, wenn es einen CSS-Selektor gibt, der auf diesen Eintrag im Menü verweist. Wissen Sie, ob dieser Selektor existiert? – jperelli

0

ich das Problem gelöst wird, nur wenn jemand hier eine Suchmaschine kommt mit, ich poste die Lösung.

Bei einigen Nachforschungen habe ich den Teil des Codes gefunden, in den der Titeltextkasten eingefügt wird, und ich habe a function to know if a user has a certain capability gefunden.

Die Datei, in der das Titeltextfeld hinzugefügt wird, ist /wp-admin/edit-form-advanced.php.Das ist die Linie, bevor der Textbox

if (post_type_supports($post_type, 'title')) 

habe ich es auf diese

if (post_type_supports($post_type, 'title') and current_user_can('edit_title')) 

Auf diese Weise wird die Textbox nur hinzugefügt, wenn der Benutzer die Fähigkeit „edit_title“ genannt

Wenn diese IF-Block nach wenigen Zeilen endet, fügte ich hinzu:

else echo "<h2>".esc_attr(htmlspecialchars($post->post_title))."</h2>"; 

den Titel der Seite zu sehen, aber nicht zu bearbeiten wenn der Benutzer keine "edit_title" -Funktion hat.

Dann hatte ich bereits eine plugin to edit user capabilities and roles installiert, die mir hilft, eine neue Fähigkeit zu erstellen (edit_title) und sie der Rolle zuzuweisen, die ich möchte.

+4

Sie sollten niemals die Kerndateien von Wordpress bearbeiten. Zukünftige Updates werden diesen Hack entfernen. –

+3

Sie haben Recht, ich sehe diese Antwort 2 Jahre später und ich denke, ist nur dumm. Aber ich sehe, wie viel ich gelernt habe. StackOverflow ist großartig. – jperelli