从SANITIZE_html_CLASS排除URL

时间:2021-10-20 作者:Dev

我搜索了类似的问题,但什么也没找到。

我编写了一个元框,用于添加自定义URL,这些URL会添加到单个帖子的按钮中,但当URL添加到编辑帖子屏幕上的元框字段并保存时,它会将URL从以下内容中删除:

http://example.com
对此:

httpexamplecom
我假设由于sanitize\\U html\\U classes函数与save\\U post函数一起使用,如下所示:

add_action( \'save_post\', \'projecturl_save\', 1, 2 );
function projecturl_save( $post_id, $post ) {

    if ( ! isset( $_POST[\'projecturl\'] ) ) {
        return;
    }

    $data = wp_parse_args(
        
        $_POST[\'projecturl\'],
        [
            \'_custom_projecturl\' => \'\',
        ]
    );

    $data = array_map( \'custom_sanitize_html_classes\', $data );

    save_custom_fields( $data, \'projecturl_save\', \'projecturl_nonce\', $post );

}
我正在使用一个自定义函数save\\u sanitize\\u html\\u classes函数,但其中并没有任何内容可以删除,所以它必须与sanitize_html_classes 作用

function custom_sanitize_html_classes( $classes, $return_format = \'input\' ) {

    if ( \'input\' === $return_format ) {
        $return_format = is_array( $classes ) ? \'array\' : \'string\';
    }

    $classes = is_array( $classes ) ? $classes : explode( \' \', $classes );

    $sanitized_classes = array_map( \'sanitize_html_class\', $classes );

    if ( \'array\' === $return_format ) {
        return $sanitized_classes;
    }

    return implode( \' \', $sanitized_classes );

}
我可以删除清理(当我做的时候也可以),但我更喜欢过滤它以排除URL中的字符。任何帮助都将不胜感激。

1 个回复
SO网友:Dev

输入时,esc_url_raw() 是要使用的正确函数sanitize_url

示例:

$custom_field = esc_url_raw( get_post_meta( get_the_ID(), \'_custom_url\', true ) );

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: