Add HTML to Term Description

时间:2015-03-18 作者:Howdy_McGee

我正在尝试添加(使用wp_editor ) 不带加号的HTML术语描述。每当我尝试吐出数据时,都会得到转义的HTML:

&lt;strong&gt;test&lt;/strong&gt; 应该是<strong>test</strong>

我试过了html_entity_decode() 但会带来意想不到的后果。。。

<div class="\\&quot;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?

1 个回复
最合适的回答,由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,
    ) ); 
?>

结束