Дополнительные поля для записей, товаров
Плагином: Advanced Custom Fields
Для добавления/редактирования полей в левом меню появиться блок: Группы полей
Данный плагин дает возможность добавлять/редактировать дополнительные поля для записей, товаров. Поля по умолчанию в шаблоне (на сайте) не появляются. Для вывода на сайте необходимо зайти Группы полей -> Инструменты выбрать необходимые поля и нажать Генерировать PHP
Вручную
add_action( 'add_meta_boxes', 'fn_dop_pola_info_box', 10 );
function fn_dop_pola_info_box(){
add_meta_box( 'fn_dop_pola_info', 'Доп. поля для шаблона', 'fn_dop_pola_info_content', [ 'post', 'page', 'product' ], 'normal', 'high' );
}
function fn_dop_pola_info_content( $post ){
?>
<div class="form-field term-name-wrap">
<label for="dop_pola_n1" style="font-weight:700;">Поле текстовое многострочное</label>
<textarea name="dop_pola_n1" id="dop_pola_n1" rows="3" cols="40"><?php echo get_post_meta( $post->ID, 'dop_pola_n1', 1 ); ?></textarea>
<p style="margin-top:0;font-style:italic;opacity:0.7;"></p>
</div>
<div class="form-field term-name-wrap">
<label for="dop_pola_n2" style="font-weight:700;">Поле редактора</label>
<?php wp_editor( htmlspecialchars_decode( get_post_meta($post->ID, 'kremen_dop_pola_minides' , true ) ), 'kremen_dop_pola_minides', $settings = ['textarea_name' => 'kremen_dop_pola_minides'] ); ?>
<p style="margin-top:0;font-style:italic;opacity:0.7;"></p>
</div>
<?php
}
// Сохранение POST
add_action( 'save_post', 'fn_dop_pola_info_update', 0 );
function fn_dop_pola_info_update( $post_id ){
if( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ){
return false;
}
$arFlds = [ 'n1', 'n2' ];
foreach($arFlds as $v){
if( isset($_POST['dop_pola_'.$v]) ){
if( empty( $_POST['dop_pola_'.$v] ) ){
delete_post_meta( $term_id, 'dop_pola_'.$v );
continue;
}
update_post_meta( $post_id, 'dop_pola_'.$v, esc_attr( $_POST['dop_pola_'.$v] ) );
}
}
return $post_id;
}
Особенности вывода
Для вывода полей из текстового редактора необходимо применить данные функции:
wpautop( ‘данные поля’ ) — Заменяет двойной перенос строки на HTML конструкцию <p>…</p>, а одинарный на <br>.
wp_specialchars_decode( ‘данные поля’ ) — Конвертирует (декодирует) HTML сущности в их HTML символы. Изменяет только: &, <, >, «, ‘
Пример:
echo wpautop( wp_specialchars_decode( get_post_meta( get_the_ID() , 'dop_pole', true ) ) );