Wie kann ich einfach zu übergeordneten Themenfunktionen hinzufügen, anstatt die ganze function neu zu deklarieren

Ich verwende ein kommerzielles Thema, das seine Designeinstellungen in WordPresss Aussehen / Anpassung hat. Sie rufen ihre Einstellungen über eine function wie folgt auf: (Dies ist nur ein Teil der function, die etwa 400 Zeilen lang ist)

function customizer_library_gateway_options() { // Home $section = 'home'; $sections[] = array( 'id' => $section, 'title' => __( 'Home', 'gateway' ), 'priority' => '20', 'description' => __( 'Home Page Options.', 'gateway' ), 'panel' => $panel ); $options['home_hero_bg'] = array( 'id' => 'home_hero_bg', 'label' => __( 'Home Background Image', 'gateway' ), 'section' => $section, 'type' => 'image', 'default' => $imagepath . 'hero-bg.jpg', 'active_callback' => 'is_front_page' ); $options['bg_attachement'] = array( 'id' => 'bg_attachement', 'label' => __( 'Select the behavior of the background image.', 'gateway' ), 'section' => $section, 'type' => 'select', 'choices' => $bg_attachment, 'default' => 'fixed', 'active_callback' => 'is_front_page' ); $options['home_hero_bg_color'] = array( 'id' => 'home_hero_bg_color', 'label' => __( 'Home Hero background color if no image is being used.', 'gateway' ), 'section' => $section, 'type' => 'color', 'default' => $primary_color, 'active_callback' => 'is_front_page', 'transport' => 'postMessage' ); $options['home_posts_title'] = array( 'id' => 'home_posts_title', 'label' => __( 'Enter the home featured posts section title', 'gateway' ), 'section' => $section, 'type' => 'text', 'default' => 'Featured Posts', 'active_callback' => 'is_front_page', 'transport' => 'postMessage' ); $options['home_posts_cat'] = array( 'id' => 'home_posts_cat', 'label' => __( 'Home Posts Category', 'gateway' ), 'section' => $section, 'type' => 'select', 'choices' => $options_cats, 'default' => '', 'active_callback' => 'is_front_page' ); } add_action( 'init', 'customizer_library_gateway_options' ); 

Meine Frage ist: Wie kann ich dieses Array über mein Child-Theme hinzufügen, damit ich eine Logo-Option hinzufügen kann? Ich möchte nicht unbedingt die gesamte function neu deklarieren, wenn ich einfach meine Array-Einfügung hinzufügen kann:

Ich dachte, add_filter, aber ich bin mir nicht sicher. Das habe ich in meinem Kindthema functions.php versucht:

 function customizer_library_gateway_home_logo() { $options['home_logo'] = array( 'id' => 'home_logo', 'label' => __( 'Logo', 'gateway' ), 'section' => 'home', 'type' => 'image', 'default' => $imagepath . 'logo.png' ); } add_filter( 'customizer_library_gateway_options', 'customizer_library_gateway_home_logo' ); 

Der Designanpasser wird jedoch nicht geändert. Wenn ich den home_logo-Eintrag direkt in der ursprünglichen Datei des Themas hinzufüge, funktioniert es. Vielleicht gibt es eine andere Aktion, die ich verwenden sollte?

Solutions Collecting From Web of "Wie kann ich einfach zu übergeordneten Themenfunktionen hinzufügen, anstatt die ganze function neu zu deklarieren"

Ich könnte eine Lösung für dich haben.

Aber denken Sie daran, zuerst die standardmäßige WordPress Custom Logo-Unterstützung zu verwenden. Sie müssen dies nur zu Ihrer Datei functions.php hinzufügen:

function theme_prefix_setup() { add_theme_support( 'custom-logo' ); } add_action( 'after_setup_theme', 'theme_prefix_setup' );
function theme_prefix_setup() { add_theme_support( 'custom-logo' ); } add_action( 'after_setup_theme', 'theme_prefix_setup' ); 

Weitere Details zu add_theme_support( 'custom-logo' ); unter https://codex.wordpress.org/Theme_Logo .

Wenn Sie nun auf Darstellung > Anpassen klicken, wird unter Site-Identität das neue Logo- Feld angezeigt .

Wenn die obige Lösung nicht zu Ihnen passt, lesen Sie weiter …

Ich habe den Code unten getestet und es funktioniert gut (natürlich habe ich es geändert, um einige Ihrer Bedürfnisse zu erfüllen).

/** * @param object $instance */ function customize_customize_page( $instance ) { // Set the args. You do not need to set 'type' key here. $args = array( 'priority' => 0, 'section' => 'home', // 'settings' => 'home', 'label' => __( 'Logo' ), 'description' => __( 'Description' ), ); // Here we instance WP_Customize_Image_Control class and set its paramaters. // See that here is where you choose your option ID. $instance->add_control( new WP_Customize_Image_Control( $instance, 'home_logo', $args ) ); } add_action( 'customize_register', 'customize_customize_page', 199, 1 );
/** * @param object $instance */ function customize_customize_page( $instance ) { // Set the args. You do not need to set 'type' key here. $args = array( 'priority' => 0, 'section' => 'home', // 'settings' => 'home', 'label' => __( 'Logo' ), 'description' => __( 'Description' ), ); // Here we instance WP_Customize_Image_Control class and set its paramaters. // See that here is where you choose your option ID. $instance->add_control( new WP_Customize_Image_Control( $instance, 'home_logo', $args ) ); } add_action( 'customize_register', 'customize_customize_page', 199, 1 ); 

Wenn der obige Code nicht funktioniert, sollten Sie die ‘Einstellungen’ des Schlüssels auskommentieren und es erneut versuchen.