Помогите с кодом
-
Есть код который создает произвольные поле, но вот только он сохраняет и выводит только в записях, а на страницах нет. Помогите пожалуйста исправить с кодом, чтобы сохранял и выводил для страниц тоже
function my_meta_box() {
add_meta_box(
‘my_meta_box’, // Идентификатор(id)
‘Мета описание страницы’, // Заголовок области с мета-полями(title)
‘show_my_metabox’, // Вызов(callback)
array(‘post’, ‘page’), // Где будет отображаться наше поле, в нашем случае в Записях
‘normal’,
‘high’);
}
add_action(‘add_meta_boxes’, ‘my_meta_box’); // Запускаем функцию$meta_fields = array(
array(
‘label’ => ‘Description’,
‘desc’ => ‘Информация о содержимом страницы 150-200 знаков’,
‘id’ => ‘description’, // даем идентификатор.
‘type’ => ‘textarea’ // Указываем тип поля.
),);
// Вызов метаполей
function show_my_metabox() {
global $meta_fields; // Обозначим наш массив с полями глобальным
global $post; // Глобальный $post для получения id создаваемого/редактируемого поста
// Выводим скрытый input, для верификации. Безопасность прежде всего!
echo ‘<input type=»hidden» name=»custom_meta_box_nonce» value=»‘.wp_create_nonce(basename(__FILE__)).'» />’;// Начинаем выводить таблицу с полями через цикл
echo ‘<table class=»form-table»>’;
foreach ($meta_fields as $field) {
// Получаем значение если оно есть для этого поля
$meta = get_post_meta($post->ID, $field[‘id’], true);
// Начинаем выводить таблицу
echo ‘<tr>
<th><label for=»‘.$field[‘id’].'»>’.$field[‘label’].'</label></th>
<td>’;
switch($field[‘type’]) {case ‘textarea’:
echo ‘<textarea name=»‘.$field[‘id’].'» id=»‘.$field[‘id’].'» style=»width: 100%;» rows=»3″>’.$meta.’ </textarea>
<br /><span class=»description»>’.$field[‘desc’].'</span>’;
break;// Всплывающий список
case ‘select’:
echo ‘<select name=»‘.$field[‘id’].'» id=»‘.$field[‘id’].'»>’;
foreach ($field[‘options’] as $option) {
echo ‘<option’, $meta == $option[‘value’] ? ‘ selected=»selected»‘ : », ‘ value=»‘.$option[‘value’].'»>’.$option[‘label’].'</option>’;
}
echo ‘</select><br /><span class=»description»>’.$field[‘desc’].'</span>’;
break;
}
echo ‘</td></tr>’;
}
echo ‘</table>’;
}// Пишем функцию для сохранения
function save_my_meta_fields($post_id) {
global $meta_fields; // Массив с нашими полями// проверяем наш проверочный код
if (!wp_verify_nonce($_POST[‘custom_meta_box_nonce’], basename(__FILE__)))
return $post_id;
// Проверяем авто-сохранение
if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
return $post_id;
// Проверяем права доступа
if (‘page’ == $_POST[‘post_type’]) {
if (!current_user_can(‘edit_page’, $post_id))
return $post_id;
} elseif (!current_user_can(‘edit_post’, $post_id)) {
return $post_id;
}// Если все отлично, прогоняем массив через foreach
foreach ($meta_fields as $field) {
$old = get_post_meta($post_id, $field[‘id’], true); // Получаем старые данные (если они есть), для сверки
$new = $_POST[$field[‘id’]];
if ($new && $new != $old) { // Если данные новые
update_post_meta($post_id, $field[‘id’], $new); // Обновляем данные
} elseif (» == $new && $old) {
delete_post_meta($post_id, $field[‘id’], $old); // Если данных нету, удаляем мету.
}
} // end foreach
}
add_action(‘save_post’, ‘save_my_meta_fields’); // Запускаем функцию сохранения
- Тема «Помогите с кодом» закрыта для новых ответов.