2012-11-26 2 views
5

Gibt es eine Möglichkeit, eine Vorlagendatei in Admin zu verbergen?Wie kann man eine Vorlage in Wordpress ausblenden?

Zum Beispiel habe ich eine Vorlage, die nur verfügbar sein sollte, wenn ein bestimmtes Plugin installiert ist, und ich weiß bereits, wie man überprüft, ob das Plugin aktiv ist. Aber wie verstecke ich die Vorlage?

Zum Beispiel möchte ich "Blogger Redirection" -template unten verbergen:

Image is just an example...

Ich habe gefunden, mehrere Links, aber alle Lösungen als veraltet zu sein scheint.

EDIT:Wenn jemand interessiert, ist, wie ich überprüfen, ob pluin aktiv Ich mache es mit der folgenden Funktion:

function isPluginActive($plugin){ 
     if (in_array($plugin, apply_filters('active_plugins', get_option('active_plugins')))) 
     { 
      return true; 
     } 
     return false; 
    } 
+0

Sind Sie Sie möchten das Admin damit nicht sagen, um die Vorlage zu sehen aufgeführt, wenn er das richtige Plugin nicht hat? – MrGlass

+0

@MrGlass JA! Genau. Wenn ein Plugin nicht installiert ist und diese Vorlage es erfordert. Angenommen, ich habe eine Vorlage, die das erweiterte benutzerdefinierte Felder-Plug-in verwendet und nicht installiert ist, sollte diese Vorlagendatei keine Option sein. – jamietelin

+0

Ich denke nicht, dass das möglich ist. Sie müssten Wordpress ausführen Ihren Code (um die Vorlage auszublenden), ohne dass Ihr Code ausgewählt wurde (da das Konzept hier ist, dass sie die Vorlage nicht verwenden können). – MrGlass

Antwort

12

Update - ein Wort der Vorsicht, wie von Andrew in den Kommentaren unten wies darauf hin:

Mit Vorsicht, diesen Code, Wenn Sie irgendwelche Seiten unter Verwendung der Schablone, die Sie aus der Auswahl entfernt, Aktualisierung die Seite wird dazu führen, dass die Standardvorlage


ich bin nicht sicher zurückkehren, wenn es eine PHP Art und Weise, dies zu tun ist - Sie in der WP_Theme Klasse aussehen müssen werden, aber aus meinem Zunächst einmal ist es vielleicht nicht möglich, denn um alle Vorlagen zu erhalten, verwendet die Klasse eine interne Funktion namens scandir(), die das aktuelle Themenverzeichnis durchsucht und alle .php Dateien von dort abruft. Es sucht dann nach dem entsprechenden Template Name: Bezeichner und wenn es vorhanden ist, wird es der Vorlagenliste hinzugefügt.

Stattdessen schlage ich vor, dass Sie ein kleines JS hinzufügen, das diese Option aus der Seitenvorlage entfernen wird. Hier ist ein Code-Schnipsel:

function my_remove_page_template() { 
    global $pagenow; 
    if (in_array($pagenow, array('post-new.php', 'post.php')) && get_post_type() == 'page') { ?> 
     <script type="text/javascript"> 
      (function($){ 
       $(document).ready(function(){ 
        $('#page_template option[value="sidebar-page.php"]').remove(); 
       }) 
      })(jQuery) 
     </script> 
    <?php 
    } 
} 
add_action('admin_footer', 'my_remove_page_template', 10); 

Dies wird die Vorlage sidebar-page.php aus der Dropdown entfernen. Die Bedingungen sind so, dass das Skript nur beim Hinzufügen und Bearbeiten von Bildschirmen von Seiten hinzugefügt wird.

zu Ihrem Fall einstellen und genießen :)

+2

+1, um sicherzustellen, dass das Skript enthalten ist nur hinzufügen und bearbeiten Bildschirme. – Sudar

+2

+1 für die Erläuterung, wie WP nach Vorlagendateien sucht. – jamietelin

+2

Verwenden Sie diesen Code mit Vorsicht. Wenn Sie Seiten verwenden, die die Vorlage verwenden, die Sie aus der Auswahl entfernt haben, wird sie beim Aktualisieren der Seite auf die Standardvorlage zurückgesetzt – andrew

4

Wordpress keine Haken liefert, so dass Sie nicht entferne es aus PHP.

Eine Alternative, die ich denken könnte ist, dass Sie es dynamisch mit JavaScript entfernen können. Fügen Sie ein JavaScript-Snippet in die Seite add post ein, das die Option aus dem Element select entfernt.

Ich weiß, das ist keine saubere Lösung, aber ich denke, das ist der einzig mögliche Weg jetzt.

bearbeitet:

Eine weitere Option ist die Template-Datei auf das Thema Verzeichnis zu kopieren, wenn das Plugin aktiviert und die Template-Datei entfernen, wenn das Plugin deaktiviert.

Dies setzt voraus, dass die Vorlage nur von diesem Plugin verwendet wird.

+0

Ich stimme zu, für jetzt kann dies die einzige Option sein. – bodi0

+0

Ich sehe. Ich befürchtete, dass dies der Fall war. Schätze, ein Js-Hack wird die Arbeit machen müssen. ;) – jamietelin

+1

Du kannst auch die zweite Option ausprobieren, die ich in meiner Antwort gepostet habe. – Sudar