J'utilise wordpress 4.7.2.
Je crée une section de personnalisation pour mon thème personnalisé. Ceci est mon contrôle de sélection.
$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,
) );
et ma fonction sanitize_callback est
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 );
}
Erreur d'affichage Valeur invalide, lors de la tentative de sauvegarde des données.
J'ai essayé même avec juste la fonction sanitize_key mais ne peux pas le faire correctement
public function my_theme_sanitize_select( $input ) {
return sanitize_key( $input );
}
et même à
public function my_theme_sanitize_select( $input ) {
return $input;
}
et
public function my_theme_sanitize_select( $input ) {
return true;
}
mais lorsque je n’appelle aucune fonction de désinfection, cela fonctionne correctement. cela signifie que je fais une erreur en créant sanitize_callback (), mais que dans référence la fonction de rappel a le même nom et la même définition.
après cela, j’ai cherché un problème similaire et obtenu un mais je n’ai pas pu résoudre ce problème, aidez-moi, s’il vous plaît.
J'ai parcouru les codes principaux et trouvé dans WP_Customize_Setting
class sanitize()
mes données d'entrée deviennent null
. mais ne pouvait pas avoir plus d'idée.
La logique add_setting
ne peut pas trouver la fonction my_theme_sanitize_select
, vous devez lui indiquer où elle se trouve:
'sanitize_callback' => array( $this, 'my_theme_sanitize_select' ),
rappelez-vous que votre fonction est dans une classe, donc ajoutez-la à votre classe:
public function my_theme_sanitize_select( $input, $setting ) {
$from_parent = my_theme_sanitize_select( $input, $setting );
return $from_parent;
}