args['id'] . '_type';
if( isset( $field->args['points_type_key'] ) ) {
$post_type_meta_key = $field->args['points_type_key'];
}
// Support for CT objects
if( $ct_cmb2_override === true ) {
$points_type = ct_get_object_meta( $object_id, $post_type_meta_key, true );
} else {
$points_type = get_post_meta( $object_id, $post_type_meta_key, true );
}
// Grab our points types as a html
$points_types_options = '';
foreach( gamipress_get_points_types() as $slug => $data ) {
$points_types_options .= '';
} ?>
-
input( array(
'name' => $field_type->_name(),
'id' => $field_type->_id(),
'value' => $value,
'desc' => '',
'type' => 'number',
'step' => 1,
'min' => 0,
'class' => 'medium-text',
'placeholder' => 0
) ); ?>
-
select( array(
'name' => $post_type_meta_key,
'id' => $post_type_meta_key,
'value' => $points_type,
'desc' => '',
'options' => $points_types_options,
'onchange' => 'this.className=this.options[this.selectedIndex].className',
) ); ?>
_desc( true );
}
add_action( 'cmb2_render_gamipress_points', 'cmb2_render_gamipress_points_field_type', 10, 5 );
/**
* After save GamiPress points field type, needs to store the points type value too
*
* @param string $field_id the current field id paramater.
* @param bool $updated Whether the metadata update action occurred.
* @param string $action Action performed. Could be "repeatable", "updated", or "removed".
* @param CMB2_Field object $field This field object
*/
function cmb2_save_gamipress_points_field_type( $field_id, $updated, $action, $field ) {
global $ct_cmb2_override;
if( $field->args['type'] !== 'gamipress_points' ) {
return;
}
$post_type_meta_key = $field->args['id'] . '_type';
if( isset( $field->args['points_type_key'] ) ) {
$post_type_meta_key = $field->args['points_type_key'];
}
if ( isset( $_REQUEST[$post_type_meta_key] ) ) {
$value = sanitize_text_field( $_REQUEST[$post_type_meta_key] );
if( $ct_cmb2_override === true ) {
ct_update_object_meta( $field->object_id, $post_type_meta_key, $value );
} else {
update_metadata( $field->object_type, $field->object_id, $post_type_meta_key, $value );
}
} else {
return;
}
}
add_action( 'cmb2_save_field', 'cmb2_save_gamipress_points_field_type', 10, 4 );
endif;