Я использую этот скрипт, приведенный здесь https://github.com/awshout/Custom-WordPress-Meta-Boxes/tree/master/metaboxes
он работает нормально, но проблема в том, что он не сохраняет html-коды/теги. Когда я пишу тест, все в порядке, но когда я помещаю любой html-код в обычные текстовые области или c ustom wp_editor, он не сохраняет данные.
ниже приведена часть функций для сохранения данных. У вас есть идеи, как заставить его работать для сохранения исходного кода html? спасибо
function save_box( $post_id ) {
$post_type = get_post_type();
// verify nonce
if ( ! isset( $_POST['custom_meta_box_nonce_field'] ) )
return $post_id;
if ( ! ( in_array( $post_type, $this->page ) || wp_verify_nonce( $_POST['custom_meta_box_nonce_field'], 'custom_meta_box_nonce_action' ) ) )
return $post_id;
// check autosave
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return $post_id;
// check permissions
if ( ! current_user_can( 'edit_page', $post_id ) )
return $post_id;
// loop through fields and save the data
foreach ( $this->fields as $field ) {
if( $field['type'] == 'section' ) {
$sanitizer = null;
continue;
}
if( in_array( $field['type'], array( 'tax_select', 'tax_checkboxes' ) ) ) {
// save taxonomies
if ( isset( $_POST[$field['id']] ) ) {
$term = $_POST[$field['id']];
wp_set_object_terms( $post_id, $term, $field['id'] );
}
}
else {
// save the rest
$new = false;
$old = get_post_meta( $post_id, $field['id'], true );
if ( isset( $_POST[$field['id']] ) )
$new = $_POST[$field['id']];
if ( isset( $new ) && '' == $new && $old ) {
delete_post_meta( $post_id, $field['id'], $old );
} elseif ( isset( $new ) && $new != $old ) {
$sanitizer = isset( $field['sanitizer'] ) ? $field['sanitizer'] : 'sanitize_text_field';
if ( is_array( $new ) )
$new = meta_box_array_map_r( 'meta_box_sanitize', $new, $sanitizer );
else
$new = meta_box_sanitize( $new, $sanitizer );
update_post_meta( $post_id, $field['id'], $new );
}
}
} // end foreach
}
meta_box_sanitize()
и посмотрите, что она делает для очистки текста. Это может быть место, где удаляется html-контент. - person William Patton   schedule 12.09.2016$sanitizer
установлен во время обновления? - person William Patton   schedule 12.09.2016$sanitizer = 'wp_kses_post'
. Это позволит пройти некоторому html. Протестируйте сохранение метабокса еще раз с чем-то вроде тега<p>....</p>
или ссылкой в нем и посмотрите, сохраняется ли он. - person William Patton   schedule 12.09.2016foreach ( $this->fields as $field ) {
, но это делает ту же проблему и не сохраняет как html - person   schedule 12.09.2016