0


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

请先看照片。

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

保存自定义帖子数据后的屏幕。wp 编辑器显示带有 html 标签的文本而不是渲染。
保存屏幕后

你好这里是插件根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 );
        }
    }
} 
4

1 回答 1

0

我的错。 CompanyMetaBox类需要去掉 esc_html

于 2016-09-05T18:36:24.383 回答