Wordpress自定义插件。 wp_editor()在保存后显示html标签

时间:2016-09-05 17:42:14

标签: wordpress wp-editor


所有文本都正确保存。但保存后编辑器会显示html标签。

请先看一下图片。

屏幕保存自定义帖子数据。 WP编辑器正确呈现粗体文本。
befor saving screen

保存自定义发布数据后

屏幕。 wp编辑器显示带有html标签而不是渲染的文本。
after saving screen

你好,这是插件root php

$post_type = 'company';

function company_admin() {
    new InitCompanyAdmin();
}
function company_admin_save( $company_id, $company ) {
    new SaveCompany($company_id, $company);
}

// show company. Was called from InitCompanyAdmin class
function display_company_meta_box( $company ) {
    $companyMetaBox = new CompanyMetaBox();
    $companyMetaBox->show($company);
}


// save company
add_action( 'save_post', 'company_admin_save', 10, 2 );
add_action( 'admin_init', 'company_admin' );

InitCompanyAdmin类

class InitCompanyAdmin {
    public function __construct(){
        add_meta_box( 'edit_company_meta_box',
            'Company Details',
            'display_company_meta_box', // function inside plugin root php
            Company::$postType, 'normal', 'high'
        );
    }
}

CompanyMetaBox类 显示带有html标签而非可视化的文本

class CompanyMetaBox {
    public function show($company){
        $company_benefits = esc_html( get_post_meta( $company->ID, 'benefits', true ) );

        echo '<h1>Benefits</h1>';
        wp_editor( $company_benefits, 'benefits_editor', $settings = array()     ); // shows text with html tags instead of visualization
    }
 }

发布后广告

class SaveCompany {
    private $companyId;

    public function __construct($company_id, $company){
        $isCompanyPostType = $company->post_type == Company::$postType;

        if ( $isCompanyPostType ) {
            $this->companyId = $company_id;

            $this->saveBenefits();
        }
    }

    private function saveBenefits(){
        $benefits = $_POST['benefits_editor'];
        if ( isset( $benefits ) && $benefits != '' ) {
            update_post_meta( $this->companyId, 'benefits', $benefits );
        }
    }
} 

1 个答案:

答案 0 :(得分:0)

我的错。 CompanyMetaBox类需要删除esc_html