get_token_factory();
$target_var = $token_factory->variable( $field_id )
->add_item_path( 'target' );
$href_var = $token_factory->variable( $field_id )
->add_item_path( 'value' );
$link_label_var = $token_factory->variable( $field_id )
->add_item_path( 'linkLabel' );
$title_var = $token_factory->variable( $field_id )
->add_item_path( 'title' );
echo 'format()
->attribute( 'target', $target_var );
printf(
' class="%s"',
esc_html(
$this->get_field_class(
'link',
$markup_field_data
)
)
);
$token_factory->format()
->attribute( 'href', $href_var );
echo '>';
$token_factory->format()
->new_line();
$markup_field_data->increment_and_print_tabs();
$comparison = $token_factory->comparison()
->set_left_operand( $link_label_var )
->set_comparison_empty()
->set_right_operand( $title_var );
$token_factory->to_echo( $comparison )
->print();
$token_factory->format()
->new_line();
$markup_field_data->decrement_and_print_tabs();
echo '';
}
/**
* @return array
*/
public function get_template_variables( Variable_Field_Data $variable_field_data ): array {
$args = array(
'value' => '',
'target' => '_self',
'title' => '',
'linkLabel' => $variable_field_data->get_field_data()->get_link_label_translation(),
);
$value = arr( $variable_field_data->get_value() );
if ( 0 === count( $value ) ) {
return $args;
}
$target = string( $value, 'target' );
$is_target_set = strlen( $target ) > 0 || bool( $value, 'target' );
$args['value'] = string( $value, 'url' );
$args['title'] = string( $value, 'title' );
$args['target'] = $variable_field_data->get_field_data()->is_link_target_blank || $is_target_set ?
'_blank' :
'_self';
return $args;
}
/**
* @return array
*/
public function get_validation_template_variables( Variable_Field_Data $variable_field_data ): array {
return array(
'value' => 'https://wordpress.org/',
'target' => '_self',
'title' => 'wordpress.org',
'linkLabel' => $variable_field_data->get_field_data()->get_link_label_translation(),
);
}
public function is_with_field_wrapper(
Layout_Settings $layout_settings,
Field_Settings $field_settings,
Field_Meta $field_meta
): bool {
return $layout_settings->is_with_unnecessary_wrappers;
}
/**
* @return string[]
*/
public function get_conditional_fields( Field_Meta $field_meta ): array {
return array_merge(
parent::get_conditional_fields( $field_meta ),
array(
Field_Settings::FIELD_LINK_LABEL,
Field_Settings::FIELD_IS_LINK_TARGET_BLANK,
)
);
}
}