我是创建元盒的新手,但我已经成功地创建了一个适合我需要的元盒。但是,我需要其中两个输入框是格式化文本(显示在我的代码中);按原样保存并按原样输出到站点。不过,我似乎做不到。我可以将数据保存到数据库中,这很好,但它不会使用换行符、粗体、h1标记、段落等内容来保存文本。虽然我已经删除了很多其他元素来缩短代码以供您审查,但到目前为止,我有以下内容:
class Tour_Meta {
public function __construct() {
if ( is_admin() ) {
add_action( 'load-post.php', array( $this, 'init_metabox' ) );
add_action( 'load-post-new.php', array( $this, 'init_metabox' ) );
}
}
public function init_metabox() {
add_action( 'add_meta_boxes', array( $this, 'add_metabox' ) );
add_action( 'save_post', array( $this, 'save_metabox' ), 10, 2 );
}
public function add_metabox() {
add_meta_box(
'tourMeta',
__( 'Details for this tour', 'dappa' ),
array( $this, 'render_trmeta' ),
'tours',
'advanced',
'high'
);
}
public function render_trmeta( $post ) {
$trmet_itinerary = get_post_meta($post->ID, 'trmet_itinerary', true);
$trmet_overview = get_post_meta( $post->ID, 'trmet_overview', true );
if( empty( $trmet_itinerary ) ) $trmet_itinerary = '';
if( empty( $trmet_overview ) ) $trmet_overview = '';
echo '<div class="form-table" id="tourEntries">';
echo' <h2>Tour Overview</h2>';
wp_editor(htmlspecialchars_decode($trmet_overview) , 'trmet_overview', array(
"media_buttons" => true
));
echo' <h2>Tour Itinerary</h2>';
wp_editor(htmlspecialchars_decode($trmet_itinerary) , 'trmet_itinerary', array(
"media_buttons" => true
));
echo' </div>';
}
public function save_metabox( $post_id, $post ) {
$trmet_new_itinerary = isset( $_POST[ 'trmet_itinerary' ] ) ? sanitize_text_field( $_POST[ 'trmet_itinerary' ] ) : '';
$trmet_new_overview = isset( $_POST[ 'trmet_overview' ] ) ? sanitize_text_field( $_POST[ 'trmet_overview' ] ) : '';
}
}
new Tour_Meta
我还尝试了不同的方法将post元输出到页面,但如果在后端没有正确保存,那也没什么关系。
感谢您的任何想法。谢谢
Pfft。好吧,很简单。
我需要在这些字段上使用esc_html()
而不是sanitize_text_field()
。
谢谢!