如何让用户通过管理面板增加价值?(wordpress)


How to enable the user to add value through the admin panel? (wordpress)

请帮帮我!我有自定义的帖子类型"gallery"。在我的自定义帖子类型,我有自定义字段。我通过functions.php文件添加了它们。如何使用户能够通过管理面板为字段"цвет'(colors"(http://prntscr.com/7svcck)增加价值,而不进入functions.php允许用户添加颜色并在颜色的下拉列表中看到它(见屏幕)。

我在functions.php中的代码

if ( ! function_exists( 'bazar_tax' ) ) {
    function bazar_tax() {
        $labels = array(
            'name'                       => _x( 'Категории базарчика', 'Taxonomy General Name', 'bazar' ),
            'singular_name'              => _x( 'Категория базарчик', 'Taxonomy Singular Name', 'bazar' ),
            'menu_name'                  => __( 'Категории', 'bazar' ),
            'all_items'                  => __( 'Категории', 'bazar' ),
            'parent_item'                => __( 'Родительская категория Базарчик', 'bazar' ),
            'parent_item_colon'          => __( 'Родительская категория Базарчик:', 'bazar' ),
            'new_item_name'              => __( 'Новая категория', 'bazar' ),
            'add_new_item'               => __( 'Добавить новую категорию', 'bazar' ),
            'edit_item'                  => __( 'Редактировать категорию', 'bazar' ),
            'update_item'                => __( 'Обновить категорию', 'bazar' ),
            'search_items'               => __( 'Найти', 'bazar' ),
            'add_or_remove_items'        => __( 'Добавить или удалить категорию', 'bazar' ),
            'choose_from_most_used'      => __( 'Поиск среди популярных', 'bazar' ),
            'not_found'                  => __( 'Не найдено', 'bazar' ),
        );
        $args = array(
            'labels'                     => $labels,
            'hierarchical'               => true,
            'public'                     => true,
        );
        register_taxonomy( 'bazar_tax', array( 'bazar' ), $args );
    }
    add_action( 'init', 'bazar_tax', 0 ); 
}

function my_meta_box() {  
    add_meta_box(  
        'my_meta_box', 
        'Дополнительная информация', 
        'show_my_metabox', 
        'bazar',
        'normal',
        'high');
}  
add_action('add_meta_boxes', 'my_meta_box'); 
$meta_fields1 = array(  
    array(  
        'label' => 'Размер',  
        'desc'  => 'Пример: 25х25',  
        'id'    => 'razmer', // даем идентификатор.
        'type'  => 'text'  // Указываем тип поля.
    ),  
    array(  
        'label' => 'Номер партии',  
        'desc'  => '',  
        'id'    => 'nomer',  // даем идентификатор.
        'type'  => 'text'  // Указываем тип поля.
    ),  
    array(  
        'label' => 'Город продавца',  
        'desc'  => '',  
        'id'    => 'gorod',  // даем идентификатор.
        'type'  => 'text'  // Указываем тип поля.
    ),
    array(  
        'label' => 'Имя продавца',  
        'desc'  => '',  
        'id'    => 'name',  // даем идентификатор.
        'type'  => 'text'  // Указываем тип поля.
    ),
    array(  
        'label' => 'Телефон продавца',  
        'desc'  => '',  
        'id'    => 'telephone',  // даем идентификатор.
        'type'  => 'text'  // Указываем тип поля.
    ),    
    array(  
        'label' => 'Цвет',  
        'desc'  => 'Цвет',  
        'id'    => 'cvet',  
        'type'  => 'select',  
        'options' => array (  // Параметры, всплывающие данные
            'one' => array (  
                'label' => 'Aspen Brown AB632',  // Название поля
                'value' => 'Aspen Brown AB632'  // Значение
            ),  
            'two' => array (  
                'label' => 'Aspen Fiesta AF611',  // Название поля
                'value' => 'Aspen Fiesta AF611'  // Значение
            ),  
            'three' => array (  
                'label' => 'Aspen Glacier AG612',  // Название поля
                'value' => 'Aspen Glacier AG612'  // Значение
            ),
            'four' => array (  
                'label' => 'Aspen Lava AL650',  // Название поля
                'value' => 'Aspen Lava AL650'  // Значение
            ),
            'five' => array (  
                'label' => 'Aspen Mine AM633',  // Название поля
                'value' => 'Aspen Mine AM633'  // Значение
            ),
            'six' => array (  
                'label' => 'Aspen PEPPER AP640',  // Название поля
                'value' => 'Aspen PEPPER AP640'  // Значение
            ),
            'seven' => array (  
                'label' => 'Aspen Seashell AS642',  // Название поля
                'value' => 'Aspen Seashell AS642'  // Значение
            ),
            'eight' => array (  
                'label' => 'Aspen Sky AS670',  // Название поля
                'value' => 'Aspen Sky AS670'  // Значение
            ),
            'ten' => array (  
                'label' => 'Aspen Snow AS610',  // Название поля
                'value' => 'Aspen Snow AS610'  // Значение
            ),
            'eleven' => array (  
                'label' => 'Metallic Beach EB545',  // Название поля
                'value' => 'Metallic Beach EB545'  // Значение
            ),
            'twelve' => array (  
                'label' => 'Metallic Cosmos EC 596',  // Название поля
                'value' => 'Metallic Cosmos EC 596'  // Значение
            ),
            'thirteen' => array (  
                'label' => 'Metallic Galaxy EG595',  // Название поля
                'value' => 'Metallic Galaxy EG595'  // Значение
            ),
            'fourteen' => array (  
                'label' => 'Metallic Sunray ES557',  // Название поля
                'value' => 'Metallic Sunray ES557'  // Значение
            ),
            'fifteen' => array (  
                'label' => 'Metallic  Satingold ES558',  // Название поля
                'value' => 'Metallic  Satingold ES558'  // Значение
            ),
            'sixteen' => array (  
                'label' => 'Metallic Sleeksilver ES581',  // Название поля
                'value' => 'Metallic Sleeksilver ES581'  // Значение
            ),
            'seventeen' => array (  
                'label' => 'Metallic Yukon EY510',  // Название поля
                'value' => 'Metallic Yukon EY510'  // Значение
            ),
            'eighteen' => array (  
                'label' => 'Mosaic Dalmatin QD212',  // Название поля
                'value' => 'Mosaic Dalmatin QD212'  // Значение
            ),
            'nineteen' => array (  
                'label' => 'Mosaic Nimbus QN287',  // Название поля
                'value' => 'Mosaic Nimbus QN287'  // Значение
            ),
            'twenty' => array (  
                'label' => 'Mosaic Black Bean QB299',  // Название поля
                'value' => 'Mosaic Black Bean QB299'  // Значение
            ),
            'twenty-one' => array (  
                'label' => 'Pebble Aqua PA860',  // Название поля
                'value' => 'Pebble Aqua PA860'  // Значение
            ),
            'twenty-two' => array (  
                'label' => 'Pebble Blue PB870',  // Название поля
                'value' => 'Pebble Blue PB870'  // Значение
            ),
            'twenty-three' => array (  
                'label' => 'Pebble Cliffside PC 895',  // Название поля
                'value' => 'Pebble Cliffside PC 895'  // Значение
            ),
            'twenty-four' => array (  
                'label' => 'Pebble CONFETTI PC880',  // Название поля
                'value' => 'Pebble CONFETTI PC880'  // Значение
            ),
            'twenty-five' => array (  
                'label' => 'Pebble Copper PC851',  // Название поля
                'value' => 'Pebble Copper PC851'  // Значение
            ),
            'twenty-six' => array (  
                'label' => 'Pebble Ebony PE814',  // Название поля
                'value' => 'Pebble Ebony PE814'  // Значение
            ),
            'twenty-seven' => array (  
                'label' => 'Pebble Frost PF812',  // Название поля
                'value' => 'Pebble Frost PF812'  // Значение
            ),
            'twenty-eight' => array (  
                'label' => 'Pebble Gold PG840',  // Название поля
                'value' => 'Pebble Gold PG840'  // Значение
            ),
            'twenty-nine' => array (  
                'label' => 'Pebble Grey PG810',  // Название поля
                'value' => 'Pebble Grey PG810'  // Значение
            ),
            'thirty' => array (  
                'label' => 'Pebble Ice PI 811',  // Название поля
                'value' => 'Pebble Ice PI 811'  // Значение
            ),
            'thirty-one' => array (  
                'label' => 'Pebble Kernel PK843',  // Название поля
                'value' => 'Pebble Kernel PK843'  // Значение
            ),
            'thirty-two' => array (  
                'label' => 'Pebble Limestone PL848',  // Название поля
                'value' => 'Pebble Limestone PL848'  // Значение
            ),
            'thirty-three' => array (  
                'label' => 'Pebble Ponderosa PP868',  // Название поля
                'value' => 'Pebble Ponderosa PP868'  // Значение
            ),
            'thirty-four' => array (  
                'label' => 'Pebble ROSE PR850',  // Название поля
                'value' => 'Pebble ROSE PR850'  // Значение
            ),
            'thirty-five' => array (  
                'label' => 'Pebble Saratoga PS820',  // Название поля
                'value' => 'Pebble Saratoga PS820'  // Значение
            ),
            'thirty-six' => array (  
                'label' => 'Pebble Swan PS813',  // Название поля
                'value' => 'Pebble Swan PS813'  // Значение
            ),
            'thirty-seven' => array (  
                'label' => 'Pebble Terrain PT857',  // Название поля
                'value' => 'Pebble Terrain PT857'  // Значение
            ),
            'thirty-eight' => array (  
                'label' => 'Quarry Mesa QM242',  // Название поля
                'value' => 'Quarry Mesa QM242'  // Значение
            ),
            'thirty-nine' => array (  
                'label' => 'Quarry Esker QE240',  // Название поля
                'value' => 'Quarry Esker QE240'  // Значение
            ),
            'forty' => array (  
                'label' => 'Quarry Oyster TO310',  // Название поля
                'value' => 'Quarry Oyster TO310'  // Значение
            ),
            'forty-one' => array (  
                'label' => 'Sanded Blush SB452',  // Название поля
                'value' => 'Sanded Blush SB452'  // Значение
            ),
            'forty-two' => array (  
                'label' => 'Sanded Birch SB412',  // Название поля
                'value' => 'Sanded Birch SB412'  // Значение
            ),
            'forty-three' => array (  
                'label' => 'Sanded Cornmeal SC433',  // Название поля
                'value' => 'Sanded Cornmeal SC433'  // Значение
            ),
            'forty-four' => array (  
                'label' => 'Sanded Chesnut SC457',  // Название поля
                'value' => 'Sanded Chesnut SC457'  // Значение
            ),
            'forty-five' => array (  
                'label' => 'Sanded Cream SM421',  // Название поля
                'value' => 'Sanded Cream SM421'  // Значение
            ),
            'forty-six' => array (  
                'label' => 'Sanded Dark Nebula DN421',  // Название поля
                'value' => 'Sanded Dark Nebula DN421'  // Значение
            ),
            'forty-seven' => array (  
                'label' => 'Sanded Gold Dust SG441',  // Название поля
                'value' => 'Sanded Gold Dust SG441'  // Значение
            ),
            'forty-eight' => array (  
                'label' => 'Sanded Grey SG420',  // Название поля
                'value' => 'Sanded Grey SG420'  // Значение
            ),
            'forty-nine' => array (  
                'label' => 'Sanded Icicle SI414',  // Название поля
                'value' => 'Sanded Icicle SI414'  // Значение
            ),
            'fifty' => array (  
                'label' => 'Sanded Kiwi SK432',  // Название поля
                'value' => 'Sanded Kiwi SK432'  // Значение
            ),
            'fifty-one' => array (  
                'label' => 'Sanded Mocha SM453',  // Название поля
                'value' => 'Sanded Mocha SM453'  // Значение
            ),
            'fifty-two' => array (  
                'label' => 'Sanded Oatmeal SO446',  // Название поля
                'value' => 'Sanded Oatmeal SO446'  // Значение
            ),
            'fifty-three' => array (  
                'label' => 'Sanded Onyx SO423',  // Название поля
                'value' => 'Sanded Onyx SO423'  // Значение
            ),
            'fifty-four' => array (  
                'label' => 'Sanded Pine SP462',  // Название поля
                'value' => 'Sanded Pine SP462'  // Значение
            ),
            'fifty-five' => array (  
                'label' => 'Sanded Sahara SS440',  // Название поля
                'value' => 'Sanded Sahara SS440'  // Значение
            ),
            'fifty-six' => array (  
                'label' => 'Sanded Seafoam SS471',  // Название поля
                'value' => 'Sanded Seafoam SS471'  // Значение
            ),
            'fifty-seven' => array (  
                'label' => 'Sanded Sunset SS451',  // Название поля
                'value' => 'Sanded Sunset SS451'  // Значение
            ),
            'fifty-eight' => array (  
                'label' => 'Sanded Stratus SS418',  // Название поля
                'value' => 'Sanded Stratus SS418'  // Значение
            ),
            'sixty' => array (  
                'label' => 'Sanded Vermillion SV430',  // Название поля
                'value' => 'Sanded Vermillion SV430'  // Значение
            ),
            'sixty-one' => array (  
                'label' => 'Sanded White Pepper WP410',  // Название поля
                'value' => 'Sanded White Pepper WP410'  // Значение
            ),
            'sixty-two' => array (  
                'label' => 'Solid  Steel ST023',  // Название поля
                'value' => 'Solid  Steel ST023'  // Значение
            ),
            'sixty-three' => array (  
                'label' => 'Solid Blonde SB043',  // Название поля
                'value' => 'Solid Blonde SB043'  // Значение
            ),
            'sixty-four' => array (  
                'label' => 'Solid Bright White BW010',  // Название поля
                'value' => 'Solid Bright White BW010'  // Значение
            ),
            'sixty-five' => array (  
                'label' => 'Solid Quasar White SQ019',  // Название поля
                'value' => 'Solid Quasar White SQ019'  // Значение
            ),
            'sixty-six' => array (  
                'label' => 'Solid Californiya Poppy SC052',  // Название поля
                'value' => 'Solid Californiya Poppy SC052'  // Значение
            ),
            'sixty-seven' => array (  
                'label' => 'Solid Dazzling White SD001',  // Название поля
                'value' => 'Solid Dazzling White SD001'  // Значение
            ),
            'sixty-eight' => array (  
                'label' => 'Solid Fog SF020',  // Название поля
                'value' => 'Solid Fog SF020'  // Значение
            ),
            'sixty-nine' => array (  
                'label' => 'Solid Iris SI056',  // Название поля
                'value' => 'Solid Iris SI056'  // Значение
            ),
            'seventy' => array (  
                'label' => 'Solid Ivory SI040',  // Название поля
                'value' => 'Solid Ivory SI040'  // Значение
            ),
            'seventy-one' => array (  
                'label' => 'Solid Natural SV041',  // Название поля
                'value' => 'Solid Natural SV041'  // Значение
            ),
            'seventy-two' => array (  
                'label' => 'Solid Onyx ON095',  // Название поля
                'value' => 'Solid Onyx ON095'  // Значение
            ),
            'seventy-three' => array (  
                'label' => 'Solid Pearl SP011',  // Название поля
                'value' => 'Solid Pearl SP011'  // Значение
            ),
            'seventy-four' => array (  
                'label' => 'Solid Pure White SP016',  // Название поля
                'value' => 'Solid Pure White SP016'  // Значение
            ),
            'seventy-five' => array (  
                'label' => 'Solid Sunflower SS042',  // Название поля
                'value' => 'Solid Sunflower SS042'  // Значение
            ),
            'seventy-six' => array (  
                'label' => 'Solid Univers SU053',  // Название поля
                'value' => 'Solid Univers SU053'  // Значение
            ),
            'seventy-seven' => array (  
                'label' => 'Talus Luna TL385',  // Название поля
                'value' => 'Talus Luna TL385'  // Значение
            ),
            'seventy-eight' => array (  
                'label' => 'Tempest Adamantine FA159',  // Название поля
                'value' => 'Tempest Adamantine FA159'  // Значение
            ),
            'seventy-nine' => array (  
                'label' => 'Tempest Blaze FB147',  // Название поля
                'value' => 'Tempest Blaze FB147'  // Значение
            ),
            'eighty-one' => array (  
                'label' => 'Tempest Cinnamon FC153',  // Название поля
                'value' => 'Tempest Cinnamon FC153'  // Значение
            ),
            'eighty-two' => array (  
                'label' => 'Tempest Coffee Bean FC158',  // Название поля
                'value' => 'Tempest Coffee Bean FC158'  // Значение
            ),
            'eighty-three' => array (  
                'label' => 'Tempest Confection FC116',  // Название поля
                'value' => 'Tempest Confection FC116'  // Значение
            ),
            'eighty-four' => array (  
                'label' => 'Tempest Constellation FC197',  // Название поля
                'value' => 'Tempest Constellation FC197'  // Значение
            ),
            'eighty-five' => array (  
                'label' => 'Tempest Genesis FG174',  // Название поля
                'value' => 'Tempest Genesis FG174'  // Значение
            ),
            'eighty-six' => array (  
                'label' => 'Tempest Gleam FG146',  // Название поля
                'value' => 'Tempest Gleam FG146'  // Значение
            ),
            'eighty-seven' => array (  
                'label' => 'Tempest Glimmer FG144',  // Название поля
                'value' => 'Tempest Glimmer FG144'  // Значение
            ),
            'eighty-eight' => array (  
                'label' => 'Tempest Gold Leaf FG196',  // Название поля
                'value' => 'Tempest Gold Leaf FG196'  // Значение
            ),
            'ninety' => array (  
                'label' => 'Tempest Horizon FH114',  // Название поля
                'value' => 'Tempest Horizon FH114'  // Значение
            ),
            'ninety-one' => array (  
                'label' => 'Tempest Igneous FI187',  // Название поля
                'value' => 'Tempest Igneous FI187'  // Значение
            ),
            'ninety-two' => array (  
                'label' => 'Tempest Meteor FM111',  // Название поля
                'value' => 'Tempest Meteor FM111'  // Значение
            ),
            'ninety-three' => array (  
                'label' => 'Tempest Moonlight FM122',  // Название поля
                'value' => 'Tempest Moonlight FM122'  // Значение
            ),
            'ninety-four' => array (  
                'label' => 'Tempest Paprika FP136',  // Название поля
                'value' => 'Tempest Paprika FP136'  // Значение
            ),
            'ninety-five' => array (  
                'label' => 'Tempest Peak FP100',  // Название поля
                'value' => 'Tempest Peak FP100'  // Значение
            ),
            'ninety-six' => array (  
                'label' => 'Tempest Pinnacle FP112',  // Название поля
                'value' => 'Tempest Pinnacle FP112'  // Значение
            ),
            'ninety-seven' => array (  
                'label' => 'Tempest Praire FP142',  // Название поля
                'value' => 'Tempest Praire FP142'  // Значение
            ),
            'ninety-eight' => array (  
                'label' => 'Tempest Rattan FR124',  // Название поля
                'value' => 'Tempest Rattan FR124'  // Значение
            ),
            'ninety-nine' => array (  
                'label' => 'Tempest Rime FR118',  // Название поля
                'value' => 'Tempest Rime FR118'  // Значение
            ),
            'one-hundred' => array (  
                'label' => 'Tempest Shallot FS157',  // Название поля
                'value' => 'Tempest Shallot FS157'  // Значение
            ),
            'one-hundred-and-one' => array (  
                'label' => 'Tempest Shell FS115',  // Название поля
                'value' => 'Tempest Shell FS115'  // Значение
            ), 
            'one-hundred-and-two' => array (  
                'label' => 'Tempest SHIMMER(Radiance) FR148',  // Название поля
                'value' => 'Tempest SHIMMER(Radiance) FR148'  // Значение
            ),
            'one-hundred-and-three' => array (  
                'label' => 'Tempest Spearmint FS164',  // Название поля
                'value' => 'Tempest Spearmint FS164'  // Значение
            ), 
            'one-hundred-and-four' => array (  
                'label' => 'Tempest Spice FS137',  // Название поля
                'value' => 'Tempest Spice FS137'  // Значение
            ), 
            'one-hundred-and-five' => array (  
                'label' => 'Tempest Starfire FS198',  // Название поля
                'value' => 'Tempest Starfire FS198'  // Значение
            ),
            'one-hundred-and-six' => array (  
                'label' => 'Tempest Tektite FT188',  // Название поля
                'value' => 'Tempest Tektite FT188'  // Значение
            ),
            'one-hundred-and-seven' => array (  
                'label' => 'Tempest Twilight FT113',  // Название поля
                'value' => 'Tempest Twilight FT113'  // Значение
            ), 
            'one-hundred-and-eight' => array (  
                'label' => 'Tempest Whippoorwill FW145',  // Название поля
                'value' => 'Tempest Whippoorwill FW145'  // Значение
            ),
            'one-hundred-and-nine' => array (  
                'label' => 'Tempest Zenith FZ184',  // Название поля
                'value' => 'Tempest Zenith FZ184'  // Значение
            ),                                                                 
        )  
    )  
);
function show_my_metabox() {  
global $meta_fields1;
global $post;  
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';  

    echo '<table class="form-table">';  
    foreach ($meta_fields1 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 'text':  
    echo '<input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$meta.'" size="30" />
        <br /><span class="description">'.$field['desc'].'</span>';  
break;
case 'textarea':  
    echo '<textarea name="'.$field['id'].'" id="'.$field['id'].'" cols="60" rows="4">'.$meta.'</textarea> 
        <br /><span class="description">'.$field['desc'].'</span>';  
break;
case 'checkbox':  
    echo '<input type="checkbox" name="'.$field['id'].'" id="'.$field['id'].'" ',$meta ? ' checked="checked"' : '','/>
        <label for="'.$field['id'].'">'.$field['desc'].'</label>';  
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_fields1;  

    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 ($meta_fields1 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'); 

如果用户每次都需要更改选项,就不要使用select meta字段。我认为,简单的解决方案是在functions.php:

中为您的'gallery'帖子类型添加'color'分类法。
add_action( 'init', 'create_color_tax' );
function create_color_tax() {
    register_taxonomy(
        'color',
        'gallery',
        array(
            'label' => __( 'color' ),
            'rewrite' => array( 'slug' => 'color' ),
            'hierarchical' => true,
        )
    );
}

用户将能够每次添加和删除颜色,而无需修改functions.php。