代码之家  ›  专栏  ›  技术社区  ›  Run

WordPress wp_editor删除html标签-如何停止?

  •  4
  • Run  · 技术社区  · 8 年前

    为什么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.
    

    它拯救了它。

    有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  7
  •   Shravan Sharma    8 年前

    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' ] ) );
    

    可能会解决您的问题。

        2
  •  2
  •   Prakash Rao    8 年前

    从用户输入或数据库中清理字符串。

    检查无效的UTF-8,转换单个<字符转换为实体,删除所有标记,删除换行符、制表符和多余的空白,删除八位字节。 尝试从中删除清理功能 update_post_meta( $post_id, 'meta-textarea', sanitize_text_field( $_POST[ 'meta-textarea' ] ) );