vnt
  • 0
Учитель

Пользовательские поля для вложений?

  • 0

можно ли добавить дополнительные поля через скрипт functions.php для вложений в wordpress?

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

лучший, Дэн.

Share
  1. Вот учебник, который показывает, как добавить настраиваемые поля в оверлей вложений/медиагалереи/толстого ящика/iframe/как бы вы это ни называли.

    Я успешно использовал его, но еще не продвинулся дальше, добавив переключатели/флажки/и т. д. или запутался с ограничением изменений для определенных типов сообщений, но все это тоже выглядит вполне выполнимым.

    Вот код из ссылки выше, на случай, если он когда-нибудь исчезнет:

    1) ‘attachment_fields_to_edit’: мы прикрепим к этому хуку функцию, которая будет выполнять работу по добавлению настраиваемого поля в медиагалерею.

    /* For adding custom field to gallery popup */
    function rt_image_attachment_fields_to_edit($form_fields, $post) {
        // $form_fields is a an array of fields to include in the attachment form
        // $post is nothing but attachment record in the database
        //     $post->post_type == 'attachment'
        // attachments are considered as posts in WordPress. So value of post_type in wp_posts table will be attachment
        // now add our custom field to the $form_fields array
        // input type="text" name/id="attachments[$attachment->ID][custom1]"
        $form_fields["rt-image-link"] = array(
            "label" => __("Custom Link"),
            "input" => "text", // this is default if "input" is omitted
            "value" => get_post_meta($post->ID, "_rt-image-link", true),
                    "helps" => __("To be used with special slider added via [rt_carousel] shortcode."),
        );
       return $form_fields;
    }
    

    2) ‘attachment_fields_to_save’: это, в свою очередь, примет и сохранит пользовательский ввод.

    // now attach our function to the hook
    add_filter("attachment_fields_to_edit", "rt_image_attachment_fields_to_edit", null, 2);
    
        function rt_image_attachment_fields_to_save($post, $attachment) {
        // $attachment part of the form $_POST ($_POST[attachments][postID])
            // $post['post_type'] == 'attachment'
        if( isset($attachment['rt-image-link']) ){
            // update_post_meta(postID, meta_key, meta_value);
            update_post_meta($post['ID'], '_rt-image-link', $attachment['rt-image-link']);
        }
        return $post;
    }
    // now attach our function to the hook.
    add_filter("attachment_fields_to_save", "rt_image_attachment_fields_to_save", null , 2);
    
    • 0
  2. Вот очень хороший учебник (с исходными файлами), в котором объясняется, как добавлять настраиваемые поля для изображений, вложений, текстовых полей… и все остальное, что вам может понадобиться для ваших сообщений.

    http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

    • 0
  3. Вам нужно использовать функцию update_post_meta() ( Codex ):

    <?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>

    Что вы пытаетесь сделать, что не работает?

    • 0

Оставить ответ

You must login to add an answer.