it-swarm.com.de

Benutzerdefinierte Hintergrund- und Header-Funktion im untergeordneten Design entfernen

Ich erstelle ein Kinderthema mit 20 als Basis. Ich suche nach einer Möglichkeit, die Funktionen zum Hinzufügen von benutzerdefiniertem Header und Hintergrund zu entfernen, ohne die functions.php-Datei im übergeordneten Design zu berühren.

kein Glück damit :(

function my_child_theme_setup() {
    remove_theme_support('custom-background');
    remove_theme_support('custom-header');
}

add_action( 'after_setup_theme', 'my_child_theme_setup' );

Sowohl die Header- als auch die Hintergrundbild-Funktionen richten einige Globals ein, um zu funktionieren. Das Deaktivieren dieser Globals scheint eine gewisse Auswirkung zu haben und entfernt sie zumindest von der Administrationsseite.

add_action('after_setup_theme', 'remove_theme_features', 11 );

function remove_theme_features() {
    $GLOBALS['custom_background']   = 'kill_theme_features';
    $GLOBALS['custom_image_header'] = 'kill_theme_features';
}
class kill_theme_features {
    function init() { return false; }
}

Es wird erwartet, dass ein Klassenname als Rückruf für beide Features bereitgestellt wird, und beide erwarten, dass die angegebene Klasse eine init-Methode hat. Die Lösung bestand darin, eine Dummy-Klasse zu erstellen, die nichts tut, und die globalen Elemente zu aktualisieren, wodurch der Themenhintergrund und die Kopfzeilen im Administratorbereich effektiv gelöscht werden.

Hoffentlich hilft das..

4
t31os

Das untergeordnete Thema wird vor dem übergeordneten Thema verarbeitet. Ihre Funktion hängt also früher und wird vor twentyten_setup() ausgelöst.

Versuchen:

add_action( 'after_setup_theme', 'my_child_theme_setup', 11 );

Alternativ können Sie twentyten_setup() in Ihr untergeordnetes Design kopieren und ändern, da es für ! function_exists( 'twentyten_setup' ) als bedingt deklariert ist.

2
Rarst

remove_theme_support sollte den Trick machen.

BEARBEITEN-

Es scheint, als hätten benutzerdefinierte Header und benutzerdefinierte Hintergründe ihre eigenen Funktionen: Benutzerdefinierte Header . Ich gehe davon aus, dass derselbe Funktionstyp für benutzerdefinierte Hintergründe gelten sollte, kann ihn jedoch nicht in der Referenz finden und suche in den Dateien danach.

EDIT 2 -

Die Funktion remove_custom_image_header ist laut Codex nur ab 3.1 verfügbar. Ich würde Rarsts Vorschlag jetzt vorschlagen.

1
Cronco

versuchen:

function my_child_theme_setup() {
    global $_wp_theme_features;
    unset( $_wp_theme_features['custom-background'] );
    unset( $_wp_theme_features['custom-header'] );

}

add_action( 'after_setup_theme', 'my_child_theme_setup' );

Hoffe das hilft

0
Bainternet

Nach einer kurzen Suche durch den Kern konnte ich das Vorhandensein von remove_custom_image_header() nicht überprüfen. *). Ich habe nur add_custom_image_header() gefunden, die add_theme_support() verwendet, daher sollte dies funktionieren.

Wenn dies nicht der Fall ist, können Sie dem Kern einen Schritt näher kommen und die Theme Modifications API verwenden. Seltsam wie es ist: Die API hat nur eine Funktion, die alle Änderungen entfernt: remove_theme_mods(), die keine zusätzlichen Parameter akzeptiert.

Nachdem Sie darüber nachgedacht haben, besteht Ihre beste Chance darin, es zu filtern: add_filter( "theme_mod_$name", 'your_callback_fn' );, aber ich bin nicht ganz sicher, ob es von der Admin-Benutzeroberfläche entfernt wird (10% ige Chance). Vielleicht müssen Sie diese Menüeinträge über eine andere Funktion deaktivieren.

Wie auch immer: Sehen Sie sich ~/wp-includes/theme.php an ... das ist die Kern-Unterstützungsdatei "Twenty Ten" (die vermutlich nicht von anderen Themen verwendet wird).

*) Das ist wirklich seltsam ...

Bearbeiten:

remove_custom_image_header() ist jetzt mit WP 3.1+ verfügbar.

Und eine kurze Bearbeitung von @ t310s Antwort:

function remove_theme_features() 
{
    $GLOBALS['custom_background']   = '__return_false';
    $GLOBALS['custom_image_header'] = '__return_false';
}
add_action( 'after_setup_theme', 'remove_theme_features', 20 );

Es ist nur kürzer .

0
kaiser