如何在WordPress主题定制器中进行验证

时间:2013-08-01 03:50:03

标签: php wordpress wordpress-plugin wordpress-theming

我正在开发一个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主题定制器中进行典型的表单验证?

提前致谢

1 个答案:

答案 0 :(得分:3)

您应该使用customize_register挂钩,它不应该运行两次,因为只有在您保存数据/提交表单时才应执行(绑定)这些回调(包括sanitize_callback)。好吧,如果你正在使用钩子,现在你仍然面临这个问题,那么我认为(也许不是最好的)你可以检查表单是否已提交(isset($_post['submit']))。

要清理url(在保存数据库之前),您可以使用esc_url_raw功能。 Check Data Validationthis nice tutorial