Доработка мета-бокса Wordpress

240
22 сентября 2017, 20:44

Добрый вечер! Есть кусок файла functions.php

    add_action('add_meta_boxes', 'pomet', 1);
    function pomet(){
        add_meta_box('pomet_person', 'Описание животного', 'pomet_box', 'post', 'normal', 'high');
    }
    function pomet_box($post){
        ?>
        <div style="display: inline-block;">
            <p><label><input type="date" name="pomet[birth]" value="<? get_post_meta($post->ID,'birth', 1);?>">Дата рождения</label></p>
            <p><label><input type="text" name="pomet[color-code]" value="<? get_post_meta($post->ID,'color-code', 1);?>">Код окраса</label></p>
            <p><label><input type="text" name="pomet[color-desc]" value="<? get_post_meta($post->ID,'color-desc', 1);?>">Окрас</label></p>
            <input type="hidden" name="pomet_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
            <? image_uploader_meta('pomet[photo]', get_post_meta($post->ID,'photo', 1)); ?>
        </div>
        <?
    }
    add_action('save_post','pomet_update', 0);
    function pomet_update($post_id){
        if ( !isset($_POST['pomet_nonce']) || !wp_verify_nonce($_POST['pomet_nonce'], __FILE__) ) return false;
        if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return $post_id;
        if ( !current_user_can('edit_post', $post_id) ) return $post_id;
        if( !isset($_POST['pomet']) ) return false;
        $_POST['pomet'] = array_map('trim', $_POST['pomet']);
        foreach( $_POST['pomet'] as $key=>$value ){
    //        if( empty($value) ){
    //            delete_post_meta($post_id, $key);
    //            continue;
    //        }
            update_post_meta($post_id, $key, $value);
        }
        return $post_id;
    }
//Поля с загрузкой для записи
function image_uploader_meta( $name, $value = "", $w = 115, $h = 90) {
    $default = get_stylesheet_directory_uri() . '/img/logo.png';
    if( $value ) {
        $image_attributes = wp_get_attachment_image_src( $value, array($w, $h) );
        $src = $image_attributes[0];
    } else {
        $src = $default;
    }
    echo '
        <img data-src="' . $default . '" src="' . $value . '" width="' . $w . 'px" height="' . $h . 'px" />
        <div>
            <input type="hidden" name="' . $name . '" id="' . $name . '" value="' . $src . '" />
            <button type="submit" class="upload_image_button button">Загрузить</button>
            <button type="submit" class="remove_image_button button">&times;</button>
        </div>
    ';
}

И небольшой кусок JS:

jQuery(function($){
    $('.upload_image_button').click(function(){
        var send_attachment_bkp = wp.media.editor.send.attachment;
        var button = $(this);
        wp.media.editor.send.attachment = function(props, attachment) {
            $(button).parent().prev().attr('src', attachment.url);
            $(button).prev().val(attachment.url);
            wp.media.editor.send.attachment = send_attachment_bkp.url;
        }
        wp.media.editor.open(button);
        return false;
    });
    $('.remove_image_button').click(function(){
        var r = confirm("Уверены?");
        if (r == true) {
            var src = $(this).parent().prev().attr('data-src');
            $(this).parent().prev().attr('src', src);
            $(this).prev().prev().val('');
        }
        return false;
    });
});

Собственно вопрос, как дописать к этому всему кнопку (народе той, что в реализована в Wordpress при добавлении мета-полей), по нажатию которой будет сохранятся этот мета бокс и создаваться новый аналогичный.

READ ALSO
Как разобрать строку на части?

Как разобрать строку на части?

Имеется строка по типу:

237
Проблемы с регулярным выражением php

Проблемы с регулярным выражением php

здравствуйте, есть регулярка для проверки ника при регистрации ~^[^-_][a-zA-Z_\-0-9]*$~u но почему-то пользователь может ввести такой #ник , хэштег одобряется...

202
Что такое &ldquo;Правило одного определения&rdquo; (One definition rule)?

Что такое “Правило одного определения” (One definition rule)?

Что такое "Правило одного определения"?

340
Вылет программы C++(Segmentation fault)

Вылет программы C++(Segmentation fault)

После появления запроса на ввод чисел программа вылет с такой ошибкой: Segmentation fault (core dumped)

279