Ich arbeite an einem Thema, das eine Reihe von Bildgrößen hat richtig definiert werden:
add_image_size( 'name', 500, 200, true );
Ich möchte diese definierten Größen aus dem untergeordneten Thema überschreiben:
add_image_size( 'new-name', 400, 300, true );
Ich weiß, dass ich neue Größen hinzufügen kann, aber wenn ich den gleichen Namen hinzufüge, dh:
add_image_size( 'name', 400, 300, true );
Dann wird der übergeordnete Funktionsaufruf verwendet - der untergeordnete wird ignoriert - das Hinzufügen zusätzlicher Regeln fügt zusätzliche Bilder hinzu, die niemals verwendet werden - es ist nicht so schlimm, aber nicht effizient.
Gibt es eine Funktion zum Abmelden einer hinzugefügten Bildgröße?
Prost!
Strahl
add_image_size()
Sitzen die Anrufe nur nacktfunctions.php
oder sind sie ordnungsgemäß in einen Rückruf eingebunden und damit verbundenafter_setup_theme
? Wissen, was für die Beantwortung Ihrer Frage entscheidend ist.Antworten:
Die
add_image_size( $name, $width, $height, $crop )
Funktion ist elegant genug, um mehrere Anrufe mit derselben Funktion zu bearbeiten$name
. Es überschreibt einfach den vorhandenen Wert :Das heißt also, dass alles , was Sie tun müssen , um das übergeordnete Themas der Definition der benutzerdefinierten Bildgröße außer Kraft zu setzen, um sicherzustellen , dass Ihr Anruf zu
add_image_size()
Bränden nach dem übergeordneten Thema Ruf .Angenommen, das übergeordnete Thema gefällt mir so:
Dann wird der
add_image_size()
Anruf des übergeordneten Themas amafter_setup_theme
Hook mit der Standardpriorität (dh10
) ausgelöst .(Hinweis: Wenn die Anrufe nicht in einen Rückruf eingebunden sind, werden sie
plugins_loaded
vorrangig am Hook ausgelöst10
.)Hier ist der entscheidende Teil: Die
functions.php
Datei des untergeordneten Themes wird vor der Datei des übergeordneten Themes analysiert. Wenn Sie also dieselben Hooks zum Auslösen Ihreradd_image_size()
Anrufe verwenden, werden diese durch dieadd_image_size()
Aufrufe des übergeordneten Themes überschrieben .Die Lösung ist auf einen späteren Haken oder eine niedrigere Priorität zu verwenden , dass das Kind Theme , um sicherzustellen ,
add_image_size()
Anruf Feuer nach der Mutter Thema ist.Dies sollte der Trick sein, unabhängig davon, wie das übergeordnete Thema seine Aufrufe auslöst:
Beachten Sie, dass wir verwenden die gleichen
after_setup_theme
Haken, sondern verwenden eine niedrigere Priorität (dh11
statt10
. Rückrufe Feuer in der Reihenfolge von höherer Priorität (niedrigere Zahl) Priorität (höhere Zahl) zu senken, mit Priorität beginnen0
. So ein Rückruf in Priorität angeschlossen11
wird Feuer nach ein Rückruf mit Priorität10
.Beachten Sie auch, dass der
after_setup_theme
Hook selbst nach demplugins_loaded
Hook ausgelöst wird, sodass dieser Callback das übergeordnete Theme überschreibt, auch wenn das übergeordnete Theme_doing_it_wrong()
solche Aufrufe nicht in einen entsprechenden Callback einbindet und in einen entsprechenden Hook eingebunden ist.quelle
Wenn jemand die zusätzlichen Bildgrößen einfach deaktivieren möchte, anstatt die Abmessungen zu ändern, verwenden Sie remove_image_size (string $ name) , z
quelle
In Ihrem Chile-Thema müssten Sie verwenden
add_action( 'after_setup_theme','new-name');
quelle
new-name
ein ungültiger Rückrufname ist.