name = 'user_tos';
$this->meta_key = false;// You can set any metakey
$this->label = __( 'Consent', 'advanced-members' );
$this->category = 'Advanced Members';
$this->description = __( 'Provides an agreement field for terms of service or privacy policy.', 'advanced-members' );
$this->preview_image = amem_get_url('images/field-type-previews/field-preview-true-false.png', 'assets');
$this->defaults = array(
'default_value' => 0,
/* translators: site name string */
'message' => sprintf( __( 'By creating an account, you agree to %s\'s {terms}.', 'advanced-members' ), get_bloginfo('name') ),
'ui' => 0,
'ui_on_text' => '',
'ui_off_text' => '',
'tos_page_id' => 0,
'tos_page_text' => '',
'required' => 1,
'tos_page_id_2' => '',
);
// add_filter( 'acf/update_value/type=' . $this->name, array( $this, 'pre_update_value' ), 9, 3 );
// add_filter( 'acf/load_field/type=' . $this->name, [$this, '_load_field'] );
}
function _load_field($field) {
$field['required'] = 1;// force set required
return $field;
}
function load_field($field) {
// does not change meta key(name)
return $field;
}
function update_field( $field ) {
// does not change meta key(name)
return $field;
}
function prepare_field( $field ) {
$field['type'] = 'true_false';
// Removed force for multiple use on single form
// $field['required'] = 1;// force set require
// Change Field into a select
$field['type'] = 'true_false';
$link = $link_alt = "";
if ( $page_id = (int) $field['tos_page_id'] ) {
$url = get_permalink( $page_id );
if ( $url && !is_wp_error($url) ) {
$title = get_the_title( $page_id );
if ( $field['tos_page_text'] ) {
$title = $field['tos_page_text'];
}
$link = sprintf( '%s', esc_url($url), esc_attr($title), esc_html($title) );
}
}
// if ( isset($field['tos_page_id_2']) && ($page_id = (int) $field['tos_page_id_2']) ) {
// $url = get_permalink( $page_id );
// if ( $url && !is_wp_error($url) ) {
// $title = get_the_title( $page_id );
// if ( $field['tos_page_text_2'] ) {
// $title = $field['tos_page_text_2'];
// }
// $link_alt = sprintf( '%s', esc_url($url), esc_attr($title), esc_html($title) );
// }
// }
$field['message'] = str_replace( ['{terms}', '{terms2}', '{site_name}'], [$link, $link_alt, get_bloginfo('name')], $field['message'] );
return $field;
}
function render_field_settings( $field ) {
// parent::render_field_settings( $field );
// $this->_render_field_settings( $field );
acf_render_field_setting(
$field,
array(
'label' => __( 'Message', 'advanced-members' ),
'instructions' => __( 'Displays text alongside the checkbox. You can use TOS page link with {terms}.', 'advanced-members' ),
'type' => 'text',
'name' => 'message',
)
);
// acf_render_field_setting(
// $field,
// array(
// 'label' => __( 'Default Value', 'advanced-members' ),
// 'instructions' => '',
// 'type' => 'true_false',
// 'name' => 'default_value',
// )
// );
$pages = array(
0 => __( 'Not Selected', 'advanced-members' )
);
foreach (get_pages(array(
'sort_column' => 'post_title',
'sort_order' => 'ASC',
)) as $page ) {
$pages[$page->ID] = $page->post_title;
};
acf_render_field_setting(
$field,
array(
'label' => __( 'Terms Page', 'advanced-members' ),
'name' => 'tos_page_id',
'type' => 'select',
'instructions' => __( 'Leave empty for no page link', 'advanced-members' ),
'choices' => $pages
)
);
acf_render_field_setting(
$field,
array(
'label' => __( 'Terms page link text', 'advanced-members' ),
'instructions' => __( 'Text for the page link text. Leave empty to use the page title.', 'advanced-members' ),
'default_value' => '',
'name' => 'tos_page_text',
'type' => 'text',
'ui' => 1,
'conditions' => array(
'field' => 'tos_page_id',
'operator' => '!=',
'value' => '0',
)
)
);
// acf_render_field_setting(
// $field,
// array(
// 'label' => __( 'Use secondary TOS page', 'advanced-members' ),
// 'name' => 'use_extra_tos',
// 'type' => 'true_false',
// 'ui' => 1,
// // 'instructions' => __( 'Leave empty for no page link', 'advanced-members' ),
// // 'choices' => $pages
// 'conditions' => array(
// 'field' => 'tos_page_id',
// 'operator' => '!=',
// 'value' => '0',
// )
// )
// );
// acf_render_field_setting(
// $field,
// array(
// 'label' => __( 'Extra TOS Page', 'advanced-members' ),
// 'name' => 'tos_page_id_2',
// 'type' => 'select',
// 'instructions' => __( 'Leave empty for no page link', 'advanced-members' ),
// 'choices' => $pages,
// 'conditions' => array(
// array(
// 'field' => 'tos_page_id',
// 'operator' => '!=',
// 'value' => '0',
// ),
// array(
// 'field' => 'use_extra_tos',
// 'operator' => '==',
// 'value' => '1',
// )
// ),
// )
// );
// acf_render_field_setting(
// $field,
// array(
// 'label' => __( 'Extra TOS page link text', 'advanced-members' ),
// 'instructions' => __( 'Text of page link text. Leave empty to use page title.', 'advanced-members' ),
// 'default_value' => '',
// 'name' => 'tos_page_text_2',
// 'type' => 'text',
// 'ui' => 1,
// 'conditions' => array(
// array(
// 'field' => 'tos_page_id',
// 'operator' => '!=',
// 'value' => '0',
// ),
// array(
// 'field' => 'use_extra_tos',
// 'operator' => '==',
// 'value' => '1',
// ),
// array(
// 'field' => 'tos_page_id_2',
// 'operator' => '!=',
// 'value' => '0',
// ),
// ),
// )
// );
}
// function render_field( $field ) {
// acf_render_field( $field );
// // render
// // acf_render_field( $field );
// }
// function load_value( $value, $post_id = false, $field = false ) {
// $user = explode( '_', $post_id );
// if ( $user_id = $this->_user_id($post_id) ) {
// $value = get_user_meta( $user[1], 'description', true );
// }
// return $value;
// }
// function pre_update_value( $value, $post_id = false, $field = false ) {
// if ( $field['name'] == 'display_name' ) {
// return $value;
// }
// if ( $user_id = $this->_user_id($post_id) ) {
// remove_action( 'acf/save_post', '_acf_do_save_post' );
// $description = apply_filters( 'pre_user_description', $value );
// update_user_meta( $user_id, 'description', $description );
// add_action( 'acf/save_post', '_acf_do_save_post' );
// }
// return null;
// }
// function update_value( $value, $post_id = false, $field = false ) {
// return null;
// }
// function validate_value( $is_valid, $value, $field, $input ) {
// return $is_valid;
// }
}
// initialize
acf_register_field_type( 'amem_field_user_tos' );
endif;