私はワードプレス4.7.2を使用しています。
カスタムテーマ用のカスタマイズセクションを作成しています。これが私の選択コントロールです。
$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,
) );
そして私のsanitize_callback関数は
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 );
}
表示エラーデータを保存しようとしたときに無効な値です。
Sanitize_key関数だけでも試しましたが、正しくできません
public function my_theme_sanitize_select( $input ) {
return sanitize_key( $input );
}
そしてさらに
public function my_theme_sanitize_select( $input ) {
return $input;
}
そして
public function my_theme_sanitize_select( $input ) {
return true;
}
しかし、私がサニタイズ機能を要求していないときは、正しく機能しています。つまり、sanitize_callback()の作成を間違えていますが、 参照 でも、コールバック関数の名前と関数定義は同じです。
その後、私は同様の問題を検索し、 1 を得ましたが、この問題を解決することができませんでした、助けてください。
私はコアコードを調べ、私の入力データがnull
になっているWP_Customize_Setting
クラスsanitize()
を見つけました。しかし、それ以上のアイデアは得られませんでした。
add_setting
ロジックはmy_theme_sanitize_select
関数を見つけることができません、あなたはそれがどこにあるかをそれに伝える必要があります:
'sanitize_callback' => array( $this, 'my_theme_sanitize_select' ),
あなたの関数はクラスの中にあるので、それにアクセスすることはできません。これをあなたのクラスに追加してください:
public function my_theme_sanitize_select( $input, $setting ) {
$from_parent = my_theme_sanitize_select( $input, $setting );
return $from_parent;
}