web-dev-qa-db-de.com

Ausgewählte Steuerelemente können in der API nicht bereinigt werden

Ich benutze WordPress 4.7.2.

Ich erstelle einen Anpassungsbereich für mein benutzerdefiniertes Thema. Dies ist meine Auswahlkontrolle.

 $wp_customize->add_setting( $this->slug . '_blog[pagination_type]', array(
            'default'           => 'classic-pagination',
            'transport'         => 'postMessage',
            'type'              => 'theme_mod',
            'sanitize_callback' => 'my_theme_sanitize_select',
        ) );

        $wp_customize->add_control( $this->slug . '_blog[pagination_type]', array(
            'label'    => 'Pagination Type',
            'section'  => $this->slug . '_blog_section',
            'type'     => 'select',
            'choices'  => array(
                'classic-pagination' => 'Classic Pagination',
                'load-more-button'   => 'Load More Button'
                ),
            'priority' => 18,
        ) );

und meine sanitize_callback funktion ist

public function my_theme_sanitize_select( $input, $setting ) {
    // Ensure input is a slug
    $input = sanitize_key( $input );
    // Get list of choices from the control
    // associated with the setting
    $choices = $setting->manager->get_control( $setting->id )->choices;
    // If the input is a valid key, return it;
    // otherwise, return the default
    return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
}

Fehler wird angezeigt Ungültiger Wert, wenn versucht wird, Daten zu speichern.

Ich habe es sogar nur mit der Funktion sanitize_key versucht, kann es aber nicht richtig hinbekommen

public function my_theme_sanitize_select( $input ) {
        return sanitize_key( $input );
    }

und dann auch noch dazu

public function my_theme_sanitize_select( $input ) {
        return $input;
    }

und

public function my_theme_sanitize_select( $input ) {
        return true;
    }

aber wenn ich keine Desinfektionsfunktion anrufe, funktioniert sie ordnungsgemäß. das heißt, ich mache einen Fehler beim Erstellen von sanitize_callback (), aber auch in Referenz hat die Rückruffunktion die gleiche Benennung und Funktionsdefinition.

danach suchte ich nach einem ähnlichen Problem und bekam ein , konnte dieses Problem aber nicht lösen, bitte helfen Sie mir.

Ich habe die Kerncodes durchgesehen und in WP_Customize_Setting class sanitize() festgestellt, dass meine Eingabedaten zu null werden. Konnte aber keine Ahnung mehr bekommen.

1

Die add_setting-Logik kann die my_theme_sanitize_select-Funktion nicht finden. Sie müssen ihr mitteilen, wo sie sich befindet:

'sanitize_callback'    => array( $this, 'my_theme_sanitize_select' ),

denken Sie daran, dass sich Ihre Funktion in einer Klasse befindet, sodass nicht einfach darauf zugegriffen werden kann. Fügen Sie diese Funktion zu Ihrer Klasse hinzu:

public function my_theme_sanitize_select( $input, $setting ) {
    $from_parent = my_theme_sanitize_select( $input, $setting );
    return $from_parent;
}
1
David Lee