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, ) ); } }