避免在自定义分类元字段中剥离HTML

时间:2013-12-07 作者:JMB

我在自定义分类法上使用自定义表单字段来保存各种数据。除了在一个特殊的情况下,我试图保存一个iframe嵌入代码(来自Bandcamp),该代码稍后将在模板中回显,所有这些都工作得很好。Wordpress正在输出中的“任何”之前插入\\项。

我试过使用htmlspecialchars 在我的输出中,我还将其添加到编辑表单字段操作的值中。我想我在某个地方错过了这个过程的一部分,也许是在拯救?

保存功能为:

function save_taxonomy_custom_meta_bandcamp_embed_music( $term_id ) {
    if ( isset( $_POST[\'term_meta\'] ) ) {
        $t_id = $term_id;
        $term_meta = get_option( "taxonomy_$t_id" );
        $cat_keys = array_keys( $_POST[\'term_meta\'] );
        foreach ( $cat_keys as $key ) {
            if ( isset ( $_POST[\'term_meta\'][$key] ) ) {
                $term_meta[$key] = $_POST[\'term_meta\'][$key];
            }
        }
        // Save the option array.
        update_option( "taxonomy_$t_id", $term_meta );
    }
}  
add_action( \'edited_hhie_artists\', \'save_taxonomy_custom_meta_bandcamp_embed_music\', 10, 2 );  
add_action( \'create_hhie_artists\', \'save_taxonomy_custom_meta_bandcamp_embed_music\', 10, 2 );

2 个回复
最合适的回答,由SO网友:Ravinder Kumar 整理而成

you can use esc_attr

function save_taxonomy_custom_meta_bandcamp_embed_music( $term_id ) {
    if ( isset( $_POST[\'term_meta\'] ) ) {
        $t_id = $term_id;
        $term_meta = get_option( "taxonomy_$t_id" );
        $cat_keys = array_keys( $_POST[\'term_meta\'] );
        foreach ( $cat_keys as $key ) {
            if ( isset ( $_POST[\'term_meta\'][$key] ) ) {
                $term_meta[$key] = esc_attr( $_POST[\'term_meta\'][$key] ); // encoded text with HTML entities
            }
        }
        // Save the option array.
        update_option( "taxonomy_$t_id", $term_meta );
    }
}  
add_action( \'edited_hhie_artists\', \'save_taxonomy_custom_meta_bandcamp_embed_music\', 10, 2 );  
add_action( \'create_hhie_artists\', \'save_taxonomy_custom_meta_bandcamp_embed_music\', 10, 2 );
SO网友:Mark Kaplun

wordpress总是删除$\\u GET和$\\u POST的所有参数。在更新代码中的选项时,应该取消对它们的闪烁。

结束

相关推荐

如何让WordPress编辑器不接受HTML语言?

因此,基本上,我在我的网站上使用Wordpress编辑器,我不希望我的用户在其中发布任何HTML,因为这可能会导致一些问题。我的Wordpress编辑器当前是这样的:<?php wp_editor( get_the_content() , \'post_content\'); ?> 简单地说,我希望它看起来像一个简单的HTMLtextarea, 并去掉所有HTML标记(如PHP函数strip_tags 做尽管如此,我无法使用简单的textarea... 不知道为什么,只是我的主题有一