• Есть код который создает произвольные поле, но вот только он сохраняет и выводит только в записях, а на страницах нет. Помогите пожалуйста исправить с кодом, чтобы сохранял и выводил для страниц тоже

    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’); // Запускаем функцию сохранения

  • Тема «Помогите с кодом» закрыта для новых ответов.