为什么esc_url在SmartMetabox中不起作用

时间:2012-12-18 作者:Satrya

你试过吗http://www.wproots.com/ultimate-guide-to-meta-boxes-in-wordpress/ ? 创建metabox是一个很好的类。但我对验证有问题。

我试过了sanitize_callback 参数来清理URL,所以我使用esc_url 但该字段仍然接受所有值。这里有什么问题?

这是我的密码

add_smart_meta_box( \'themename_slides_url\', array(

    \'title\'     => __( \'Slides Options\', \'themename\' ),
    \'pages\'     => array( \'slides\' ),
    \'context\'   => \'normal\',
    \'priority\'  => \'high\',
    \'fields\'    => array(
            array(
            \'name\' => __( \'Slides URL\', \'themename\' ),
            \'id\' => \'slide_url\',
            \'default\' => \'\',
            \'desc\' => __( \'Type the URL of the slide\', \'themename\' ),
            \'type\' => \'text\',
            \'sanitize_callback\' => \'themename_sanitize_url\'
            ),
        )
    )

)


function themename_sanitize_url( $new, $meta_key, $id ) {

    if( esc_url( $new ) )
        return $new;

}
有什么想法吗?

1 个回复
SO网友:fuxia

esc_url() 不是验证器。使用PHP’s filter functions 为此。

示例:

// $url is now an URL or FALSE
$url = filter_var( \'http://example.com\', FILTER_VALIDATE_URL );

if ( $url )
    # update post meta
else
    # delete post meta

结束

相关推荐

Metabox在自定义帖子类型中不显示

我正在尝试在自定义帖子类型中创建一个metabox输入字段,即使我尽可能按照说明操作,它也无法工作。我不是一个PHP开发人员,所以我想这可能只是一个小东西,它丢失了,或者它是错误的。我的意思是,我根本不在WP UI中显示。代码如下:<?php function add_post_type($name, $args = array()) { add_action(\'init\', function() use($name, $args) {