Snippets

Martin Urbánek Taxonomy term meta - select input

Created by Martin Urbánek
<?php

// meta

function moznosti_rizikovosti(){
  return array(
    '1' => '1',
    '2' => '2',
    '3' => '3',
    '4' => '4',
    '5' => '5',
    '6' => '6',
    '7' => '7',
    '8' => '8',
    '9' => '9',
    '10' => '10'
  );
}

// add_action( '{slug taxonomie}_add_form_fields', 'add_hodnoceni_rizikovosti_field', 10, 2 );
add_action( 'programy_add_form_fields', 'add_hodnoceni_rizikovosti_field', 10, 2 );
function add_hodnoceni_rizikovosti_field($taxonomy) {
    $hodnoceni_rizikovostis = moznosti_rizikovosti();
    ?><div class="form-field term-group">
        <label for="featuret-group"><?php _e('Rizikovost', 'text_domain'); ?></label>
        <select class="postform" id="equipment-group" name="hodnoceni-rizikovosti">
            <option value="-1"><?php _e('none', 'text_domain'); ?></option>
            <?php foreach ($hodnoceni_rizikovostis as $_group_key => $_group) : ?>
                <option value="<?php echo $_group_key; ?>" class=""><?php echo $_group; ?></option>
            <?php endforeach; ?>
        </select>
    </div><?php
}

// Ukládání při tvorbě kategorie
// created_{$taxonomy}
add_action( 'created_programy', 'save_feature_meta', 10, 2 );

function save_feature_meta( $term_id, $tt_id ){
    if( isset( $_POST['hodnoceni-rizikovosti'] ) && '' !== $_POST['hodnoceni-rizikovosti'] ){
        $group = sanitize_title( $_POST['hodnoceni-rizikovosti'] );
        add_term_meta( $term_id, 'hodnoceni-rizikovosti', $group, true );
    }
}


// Přidání do editace kategorie
// {$taxonomy}_edit_form_fields
add_action( 'programy_edit_form_fields', 'edit_hodnoceni_rizikovosti_field', 10, 2 );

function edit_hodnoceni_rizikovosti_field( $term, $taxonomy ){

    $hodnoceni_rizikovostis = moznosti_rizikovosti();
    // get current group
    $hodnoceni_rizikovosti = get_term_meta( $term->term_id, 'hodnoceni-rizikovosti', true );

    ?><tr class="form-field term-group-wrap">
        <th scope="row"><label for="hodnoceni-rizikovosti"><?php _e( 'Rizikovost', 'my_plugin' ); ?></label></th>
        <td><select class="postform" id="hodnoceni-rizikovosti" name="hodnoceni-rizikovosti">
            <option value="-1"><?php _e( 'none', 'my_plugin' ); ?></option>
            <?php foreach( $hodnoceni_rizikovostis as $_group_key => $_group ) : ?>
                <option value="<?php echo $_group_key; ?>" <?php selected( $hodnoceni_rizikovosti, $_group_key ); ?>><?php echo $_group; ?></option>
            <?php endforeach; ?>
        </select></td>
    </tr><?php
}

// Ukládání v editaci
add_action( 'edited_programy', 'update_feature_meta', 10, 2 );

function update_feature_meta( $term_id, $tt_id ){

    if( isset( $_POST['hodnoceni-rizikovosti'] ) && '' !== $_POST['hodnoceni-rizikovosti'] ){
        $group = sanitize_title( $_POST['hodnoceni-rizikovosti'] );
        update_term_meta( $term_id, 'hodnoceni-rizikovosti', $group );
    }
}

// Zobrazení ve výpisu v administraci taxonomie
// manage_edit-{$taxonomy}_columns
add_filter('manage_edit-house_feature_columns', 'add_hodnoceni_rizikovosti_column' );

function add_hodnoceni_rizikovosti_column( $columns ){
    $columns['hodnoceni_rizikovosti'] = __( 'Rizikovost', 'my_plugin' );
    return $columns;
}

add_filter('manage_programy_custom_column', 'add_hodnoceni_rizikovosti_column_content', 10, 3 );

function add_hodnoceni_rizikovosti_column_content( $content, $column_name, $term_id ){
    $hodnoceni_rizikovostis = moznosti_rizikovosti();

    if( $column_name !== 'hodnoceni_rizikovosti' ){
        return $content;
    }

    $term_id = absint( $term_id );
    $hodnoceni_rizikovosti = get_term_meta( $term_id, 'hodnoceni-rizikovosti', true );

    if( !empty( $hodnoceni_rizikovosti ) ){
        $content .= esc_attr( $hodnoceni_rizikovostis[ $hodnoceni_rizikovosti ] );
    }

    return $content;
}


add_filter( 'manage_edit-house_feature_sortable_columns', 'add_hodnoceni_rizikovosti_column_sortable' );

function add_hodnoceni_rizikovosti_column_sortable( $sortable ){
    $sortable[ 'hodnoceni-rizikovosti' ] = 'hodnoceni-rizikovosti';
    return $sortable;
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.