WordPress wp_editor 删除了 html 标签 - 如何阻止它?
WordPress wp_editor removes html tags - how to stop it?
为什么 wp_editor 删除了我所有的 html 标签?
这是我的代码:
/**
* Outputs the content of the meta box.
*/
function prfx_meta_callback( $post ) {
// echo 'This is a meta box';
wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' );
$prfx_stored_meta = get_post_meta( $post->ID );
$field_value = get_post_meta( $post->ID, 'meta-textarea', false );
// Settings that we'll pass to wp_editor
$args = array (
'textarea_rows' => 4,
'teeny' => true,
// 'media_buttons' => false,
);
?>
<p>
<label for="meta-text" class="prfx-row-title"><?php _e( 'Example Text Input', 'prfx-textdomain' )?></label>
<input type="text" name="meta-text" id="meta-text" value="<?php if ( isset ( $prfx_stored_meta['meta-text'] ) ) echo $prfx_stored_meta['meta-text'][0]; ?>" />
</p>
<label for="meta-textarea" class="prfx-row-title"><?php _e( 'Example Textarea Input', 'prfx-textdomain' )?></label>
<?php wp_editor( $field_value[0], 'meta-textarea', $args);?>
<?php
}
/**
* Saves the custom meta input.
*/
function prfx_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
// Checks for input and sanitizes/saves if needed
if( isset( $_POST[ 'meta-text' ] ) ) {
update_post_meta( $post_id, 'meta-text', sanitize_text_field( $_POST[ 'meta-text' ] ) );
}
// Checks for input and sanitizes/saves if needed
if( isset( $_POST[ 'meta-textarea' ] ) ) {
update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );
}
}
add_action( 'save_post', 'prfx_meta_save' );
如何阻止它删除 html 标签?
例如我输入这个:
<img src="http://xxxx.jpg" alt="10168088_719806568132380_3368979362641476670_n" width="300" height="214" class="alignnone size-medium wp-image-96" />
它删除了它。
但是如果我输入没有 html 标签的纯文本,
abcde.
省了。
有什么想法吗?
sanitize_text_field()
清理您的输入。
所以替换
update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );
和
update_post_meta( $post_id, 'meta-textarea', stripslashes( $_POST[ 'meta-textarea' ] ) );
可能会解决您的问题。
清理用户输入或数据库中的字符串。
检查无效的 UTF-8,将单个 < 字符转换为实体,去除所有标签,去除换行符、制表符和多余的白色 space,去除八位字节。
尝试从 update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );
中删除清理功能
为什么 wp_editor 删除了我所有的 html 标签?
这是我的代码:
/**
* Outputs the content of the meta box.
*/
function prfx_meta_callback( $post ) {
// echo 'This is a meta box';
wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' );
$prfx_stored_meta = get_post_meta( $post->ID );
$field_value = get_post_meta( $post->ID, 'meta-textarea', false );
// Settings that we'll pass to wp_editor
$args = array (
'textarea_rows' => 4,
'teeny' => true,
// 'media_buttons' => false,
);
?>
<p>
<label for="meta-text" class="prfx-row-title"><?php _e( 'Example Text Input', 'prfx-textdomain' )?></label>
<input type="text" name="meta-text" id="meta-text" value="<?php if ( isset ( $prfx_stored_meta['meta-text'] ) ) echo $prfx_stored_meta['meta-text'][0]; ?>" />
</p>
<label for="meta-textarea" class="prfx-row-title"><?php _e( 'Example Textarea Input', 'prfx-textdomain' )?></label>
<?php wp_editor( $field_value[0], 'meta-textarea', $args);?>
<?php
}
/**
* Saves the custom meta input.
*/
function prfx_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
// Checks for input and sanitizes/saves if needed
if( isset( $_POST[ 'meta-text' ] ) ) {
update_post_meta( $post_id, 'meta-text', sanitize_text_field( $_POST[ 'meta-text' ] ) );
}
// Checks for input and sanitizes/saves if needed
if( isset( $_POST[ 'meta-textarea' ] ) ) {
update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );
}
}
add_action( 'save_post', 'prfx_meta_save' );
如何阻止它删除 html 标签?
例如我输入这个:
<img src="http://xxxx.jpg" alt="10168088_719806568132380_3368979362641476670_n" width="300" height="214" class="alignnone size-medium wp-image-96" />
它删除了它。
但是如果我输入没有 html 标签的纯文本,
abcde.
省了。
有什么想法吗?
sanitize_text_field()
清理您的输入。
所以替换
update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );
和
update_post_meta( $post_id, 'meta-textarea', stripslashes( $_POST[ 'meta-textarea' ] ) );
可能会解决您的问题。
清理用户输入或数据库中的字符串。
检查无效的 UTF-8,将单个 < 字符转换为实体,去除所有标签,去除换行符、制表符和多余的白色 space,去除八位字节。
尝试从 update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );