2016-09-05 3 views
0


모든 텍스트가 올바르게 저장됩니다. 그러나 저장 후 편집기는 html 태그를 보여줍니다.

먼저 사진을보십시오.

맞춤 게시 데이터 저장을위한 화면. WP 편집기는 굵게 표시된 텍스트를 올바르게 렌더링합니다. 사용자 정의 포스트 데이터를 저장 한 후
befor saving screenWordpress 커스텀 플러그인. wp_editor()는 저장 후 html 태그를 표시합니다.

화면. wp 편집기는 렌더링 대신 html 태그가있는 텍스트를 보여줍니다.
after saving screen

안녕하세요 여기 플러그인 루트 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); 
     } 
    } 
} 

답변

0

내 잘못 보호기. CompanyMetaBox 클래스은 esc_html을 제거해야합니다.