So entfernen Sie Wordpress-Designoptionen aus dem untergeordneten Design

8

Ich beginne neue Projekte, indem ich ein Kinderthema für das neunundzwanzigjährige Thema schreibe. Ich entwerfe selten das neue Thema, um irgendwelche der Optionen zu verwenden, die in dem Twentyveneventhema (wie Hintergrundfarbe, usw.) eingebaut werden. Diese restlichen Optionen tun nicht wirklich weh, aber ich möchte sie loswerden, weil sie nichts tun.

Das Problem ist, dass die Themenoptionen in der functions.php des Elternthemas deklariert sind, die zusammen mit der Datei functions.php des Kindthemas geladen wird (damit ich sie löschen kann, aber sie kommen als nächstes zurück) Aktualisierung).

Gibt es eine Möglichkeit, diese Themenoptionen aus meinem untergeordneten Thema zu entfernen oder zu deaktivieren? Vielleicht etwas in der Art einer Funktion "remove_options ()"? Oder vielleicht etwas, das diesen Effekt erzielen würde? Mit anderen Worten, die Frage ist, ob theme_options entfernt werden können, ohne die ursprüngliche Funktion, die sie hinzugefügt hat, zu löschen / überschreiben.

Ich bin sicher, mit genug Puttering könnte ich die Option mit CSS oder Javascript verstecken ... aber komm schon.

    
emersonthis 24.01.2012, 22:02
quelle

4 Antworten

12

Nach einer zweiten Runde des Grabens ...

Das ist TOTAL einfach!

Sie können meine Schritte nachvollziehen, indem Sie hier starten, aber der Code ist ziemlich selbsterklärend:

%Vor%

Sie können diese im Codex nachschlagen. Remove_theme_support verwendet eine von mehreren Zeichenfolgen, die verschiedene Optionen identifizieren (außer nur Post-Formate). Das einzige Problem, auf das ich gestoßen bin, ist, dass sie von einem Hook aus aufgerufen werden müssen (Sie können sie nicht einfach in die functions.php kopieren). Ich benutze init , aber es gibt wahrscheinlich eine andere, die mehr geeignet ist.

Das Einzige, was ich noch nicht herausgefunden habe, ist, wie man den Link "Themenoptionen", der unter Erscheinungsbilder erscheint, entfernt. Ich weiß, dass es mit add_theme_page() hinzugefügt wurde, aber es scheint keine handliche remove_theme_page() zu geben.

UPDATE: Ich habe es gefunden! Dies ist sehr schlecht dokumentiert, aber am Ende ist es ziemlich einfach zu tun:

%Vor%

In meinem Beispiel zielt 'themes.php' auf das Menü 'Darstellung', und 'theme_options' ist der menu_slug, der im neunundzwanzigjährigen Theme verwendet wird. Offensichtlich sind diese Parameter abhängig davon, welches Menü oder welches Untermenü Sie bearbeiten. Diese Seite weist Sie in die richtige Richtung.

ps: So entfernen Sie Vorlagen aus dem übergeordneten Thema, die Sie nicht verwenden möchten: THIS isn Ist für meine genaue Frage nicht wesentlich, aber es ist eng verwandt und wahrscheinlich nützlich für jeden, der versucht, das zu tun, was ich tue.

    
emersonthis 26.01.2012, 00:00
quelle
9

Die richtige Methode zum Entfernen von Themenunterstützung, die in einem übergeordneten Thema aus dem untergeordneten Thema hinzugefügt wurde, besteht darin, den Aufruf von remove_theme_support in einer after_setup_theme-Aktion mit einer niedrigeren Priorität als der übergeordneten aufzurufen.

Die functions.php-Datei von einem untergeordneten Thema wird unmittelbar vor der des übergeordneten Themas aufgerufen. Wenn Sie also die Standardpriorität für after_setup_theme verwenden, wird das after_setup_theme des Kindes vor dem des übergeordneten Elements aufgerufen, sodass Sie das Entfernen beenden nicht existierende Theme-Unterstützung in Ihrem Kind, nur um es von dem übergeordneten Element, das nach_setup_theme ausgeführt wird, wieder hinzuzufügen.

Wenn Sie also Ihre untergeordnete Aktion mit einer niedrigeren Priorität hinzufügen, können Sie sicherstellen, dass sie nach dem Aufruf des Parents für dieselbe Aktion aufgerufen wird.

Also:

%Vor%

Im Fall des neunundzwanzigjährigen Themas könntest du auch die gesamte Funktion twentyleven_setup in der functions.php deines Kindes übersteuern, aber das ist eine ziemlich unkluge Methode, um das zu erreichen.

    
Simon Hampel 06.02.2013 05:52
quelle
1

Leider funktioniert die Theme-Vererbung in Wordpress so, dass untergeordnete Theme-Funktionen nur zu den übergeordneten Theme-Funktionen "hinzugefügt" werden.

  

Im Gegensatz zu style.css überschreibt die functions.php eines untergeordneten Themas nicht das entsprechende Pendant des übergeordneten Themas. Stattdessen wird es zusätzlich zur functions.php des Elterns geladen. (Insbesondere wird es direkt vor der Datei des Elternteils geladen.) (1)

Also, in der direkten Antwort auf Ihre Frage oben, sieht es so aus (2), als wäre das nicht möglich mit der Art, wie WordPress Themen und untergeordnete Themen behandelt.

Persönlich würde ich mir keine Sorgen darüber machen, diese zusätzlichen Funktionen oder Variablen in der Datei functions.php zu haben.

  1. Ссылка
  2. Ссылка
summea 24.01.2012 22:35
quelle
1

Dies ist ein alter Thread, also möchte ich nur hinzufügen, wenn jemand diesen Ort betritt und eine Antwort möchte. Ich löse das untergeordnete Thema, indem ich genau diese Datei nehme, eine Kopie anlege und sie zum untergeordneten Thema hinzufüge. Ich habe das Plugin "Advanced Code Editor", also muss ich nicht in FTP gehen. Kopieren Sie die spezifische Datei, die Sie bearbeiten möchten, erstellen Sie ein neues Blatt im untergeordneten Design mit demselben Namen und Inhalt, und führen Sie dann die gewünschten Bearbeitungen dort durch. Es ruft zuerst die untergeordneten Designdateien ab und Ihre Site wird aktualisiert.

    
helene 06.05.2014 10:10
quelle

Tags und Links