我正在尝试添加(使用wp_editor
) 不带加号的HTML术语描述。每当我尝试吐出数据时,都会得到转义的HTML:
<strong>test</strong>
应该是<strong>test</strong>
我试过了html_entity_decode()
但会带来意想不到的后果。。。
<div class="\\"big">Test</div>
应该是<div class="big blue">Test</div>
我已尝试删除wp_kses
和其他答案一样,过滤器也提出了一些建议,但似乎没有任何影响。
remove_filter( \'pre_term_description\', \'wp_filter_kses\', 20 );
remove_filter( \'term_description\', \'wp_kses_data\', 20 );
下面是我实际显示编辑器的地方:
/**
* Adds additional fields to terms
* @param Object $term
* @return void
*/
function extra_category_fields( $term ) {
?>
<style type="text/css">
tr.form-field.term-description-wrap {display:none!important;}
</style>
<tr class="form-field">
<th scope="row" valign="top"><label for="meta-content"><?php _e( \'Description\' ); ?></label></th>
<td>
<div id="catContent">
<style type="text/css">.form-field input {width: auto!important;}</style>
<?php wp_editor( $term->description, \'term_desc\', array(
\'textarea_name\' => \'_term_desc\',
\'textarea_rows\' => 15,
) );
?>
</div>
<span class="description"><?php _e( \'The description is not prominent by default.\' ); ?></span>
</td>
</tr>
<?php
}
add_action( \'tax_class_edit_form_fields\', \'extra_category_fields\' );
以下是我实际更新数据的内容:
/**
* Save Term Meta
* @param int $term_id
* @return void
*/
function save_extra_category_fileds( $term_id ) {
global $wpdb;
if( isset( $_POST[\'_term_desc\'] ) && ! empty( $_POST[\'_term_desc\'] ) ) {
$wpdb->update( $wpdb->term_taxonomy, array( \'description\' => $_POST[\'_term_desc\'] ), array( \'term_id\' => $term_id ) );
} else {
$wpdb->update( $wpdb->term_taxonomy, array( \'description\' => \'\' ), array( \'term_id\' => $term_id ) );
}
}
add_action( \'edited_tax_class\', \'save_extra_category_fileds\' );
这与我如何显示它或如何保存它有关吗?如何在术语描述中存储/保存HTML?
最合适的回答,由SO网友:Howdy_McGee 整理而成
我所能看到的使其工作的唯一方法是通过html_entity_decode()
和stripslashes()
并将其保存为esc_attr()
:
保存期限:
$wpdb->update( $wpdb->term_taxonomy, array( \'description\' => esc_attr( $_POST[\'_term_desc\'] ) ), array( \'term_id\' => $term_id ) );
在前端显示术语:
echo apply_filters( \'the_content\', html_entity_decode( stripslashes( $term->description ) ) );
在编辑器中显示内容:
<?php wp_editor( html_entity_decode( stripslashes( $term->description ) ), \'term_desc\', array(
\'textarea_name\' => \'_term_desc\',
\'textarea_rows\' => 15,
) );
?>