Вывод разных произвольных полей для каждой записи Wordpress
Я использую дополнительные поля при работе с записями Wordpress. В админку произвольные поля я добавил с помощью кода в functions.php:
// Подключение функции мета-блока my_extra_fields
add_action('admin_init', 'my_extra_fields', 1);
function my_extra_fields() {
add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_func', 'post', 'normal', 'high' );
add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_page_func', 'page', 'normal', 'high' );
}
// HTML-код блока для постов
function extra_fields_box_func( $post ){
?>
<p>
<em>Заголовок H1:</em>
<label><input type="text" name="extra[zagolovok]" value="<?php echo get_post_meta($post->ID, 'zagolovok', 1); ?>" style="width:100%" /></label>
</p>
<input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
<?php
}
// Активация обновления полей при сохранении
add_action('save_post', 'my_extra_fields_update', 0);
// Сохранение данных при сохранении страницы
function my_extra_fields_update( $post_id ) {
if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false; // проверка, если это автосохранение
if ( !current_user_can('edit_post', $post_id) ) return false; // проверка на случай, если пользователь не имеет права редактировать запись
if( !isset($_POST['extra']) ) return false;
// Если все ок, то сохраняем или удаляем данные
$_POST['extra'] = array_map('trim', $_POST['extra']);
foreach ( $_POST['extra'] as $key => $value ) {
if ( empty( $value ) ) {
delete_post_meta( $post_id, $key ); // удаляем поле, если оно пустое
continue;
}
update_post_meta( $post_id, $key, $value ); // обновляем информацию
}
return $post_id;
}
// функция add_post_meta() срабатывает автоматически
// end Custom Fields
///////////////////////////////////////////////////
Так вот, произвольное поле "заголовок h1" выводится при редактировании любой записи а так же при любом добавлении записи. Теперь вопрос, можно ли поставить условие, типа такого
<p>
<em>Заголовок H1:</em>
<label><input type="text" name="extra[zagolovok]" value="<?php echo get_post_meta($post->ID, 'zagolovok', 1); ?>" style="width:100%" /></label>
</p>
Если страница на которой я нахожусь = /wp-admin/post.php?post=629&action=edit то вывести дополнительно поле {
<p>
<em>Заголовок H2:</em>
<label><input type="text" name="extra[zagolovok2]" value="<?php echo get_post_meta($post->ID, 'zagolovok2', 1); ?>" style="width:100%" /></label>
</p>
}
Такая реализация вообще возможна? Если да, подскажите, пожалуйста как это реализовать.
Источник: Stack Overflow на русском