Пользовательский плагин Wordpress. wp_editor() показывает html-теги после сохранения


Весь текст сохраняется корректно. Но после сохранения редактор показывает html-теги.

Пожалуйста, сначала посмотрите на картинки.

Экран перед сохранением пользовательских данных публикации. Редактор WP правильно отображает жирный текст.
перед сохранением экрана

Экран после сохранения пользовательских данных публикации. Редактор wp показывает текст с тегами html вместо рендеринга.
after экран сохранения

Здравствуйте, вот корневой плагин 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 );
        }
    }
} 

person Ilay Vasilyev    schedule 05.09.2016    source источник


Ответы (1)


Моя вина. Класс CompanyMetaBox необходимо удалить esc_html

person Ilay Vasilyev    schedule 05.09.2016