我是创建元框的新手,但我已经设法为我的需求创建了一个好的框。但是,我需要将两个输入框格式化为文本(在我的代码中显示);保存为这样并输出到网站。但是,我似乎无法使其发挥作用。我可以将数据保存到数据库中,这很好 - 但它不会使用诸如中断,粗体,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 meta输出到页面,但无论如何,如果在后端它没有正确保存,这无关紧要。
您的任何想法都表示赞赏。谢谢!
答案 0 :(得分:0)
Pfft。好的,所以很简单。
我需要在这些字段上使用esc_html()
而不是sanitize_text_field()
。
谢谢!