我正在开发一个WordPress主题,我正在为主题选项开发主题定制器。我想验证输入并在主题定制器中验证失败时显示警告。
这就是我试过的
$wp_customize->add_setting('custom_social_settings[facebook]',array(
'default' => '',
'type' => 'option',
'sanitize_js_callback' => 'check_url'
));
function check_url(){
?>
<script>
jQuery(document).ready(function(){
// My validation script
});
</script>
<?php
}
问题是当我加载页面时,sanitize_js_callback被执行两次。什么时候会调用sanitize_js_callback
?只有在单击“保存”按钮时才应调用它。我应该为保存按钮的click事件编写脚本吗?有没有更好的方法在WordPress主题定制器中进行验证?如何在WordPress主题定制器中进行典型的表单验证?
提前致谢
答案 0 :(得分:3)
您应该使用customize_register挂钩,它不应该运行两次,因为只有在您保存数据/提交表单时才应执行(绑定)这些回调(包括sanitize_callback
)。好吧,如果你正在使用钩子,现在你仍然面临这个问题,那么我认为(也许不是最好的)你可以检查表单是否已提交(isset($_post['submit'])
)。
要清理url
(在保存数据库之前),您可以使用esc_url_raw功能。 Check Data Validation和this nice tutorial。