defaults = array( 'title' => __( 'Author Details', 'advance-widget-pack' ), 'alignment' => 'left', 'user' => '', 'size' => '45', 'author_info' => 'bio', 'text-bio' => '', 'page' => '', 'page_link_text' => __( 'Read More', 'advance-widget-pack' ) . '…', 'posts_link' => '0', 'sort_radiobox' => 'bio', ); $widget_ops = array( 'classname' => 'awp_author_bio awp_widget', 'description' => __( 'Displays user profile block with Gravatar', 'advance-widget-pack' ), ); $control_ops = array( 'id_base' => 'author_bio', 'width' => 200, 'height' => 250, ); parent::__construct( 'author_bio', __( 'AWP Author Details', 'advance-widget-pack' ), $widget_ops, $control_ops ); } function widget( $args, $instance ) { $instance = wp_parse_args( (array) $instance, $this->defaults ); echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- sidebar-provided wrapper markup, trusted per WP core convention. echo '
'; if ( $instance['title'] ) { echo $args['before_title'] . esc_html( $instance['title'] ) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- title text is esc_html()'d; before/after_title are sidebar-provided wrapper markup. } $name = trim( get_the_author_meta( 'user_firstname', $instance['user'] ) . ' ' . get_the_author_meta( 'user_lastname', $instance['user'] ) ); $text = esc_html( $name ); if ( $instance['alignment'] ) { $text .= ''; } $text .= get_avatar( $instance['user'], $instance['size'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- get_avatar() output is escaped by core. if ( $instance['alignment'] ) { $text .= ''; } if ( 'bio' === $instance['sort_radiobox'] ) { $text .= '
' . esc_html( get_the_author_meta( 'description', $instance['user'] ) ) . '
'; } else { $text .= '
' . wp_kses_post( $instance['text-bio'] ) . '
'; } if ( $instance['page'] ) { $text .= sprintf( ' %s', esc_url( get_page_link( $instance['page'] ) ), esc_html( $instance['page_link_text'] ) ); } echo wpautop( $text ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- $text is built from esc_html()/esc_attr()/esc_url()-escaped pieces above. if ( $instance['posts_link'] ) { printf( '', esc_url( get_author_posts_url( $instance['user'] ) ), esc_html__( 'View My Blog Posts', 'advance-widget-pack' ) ); } echo '
'; echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- sidebar-provided wrapper markup, trusted per WP core convention. } function form( $instance ) { $instance = wp_parse_args( (array) $instance, $this->defaults ); ?>

'authors', 'name' => $this->get_field_name( 'user' ), 'selected' => $instance['user'] ) ); ?>

value="bio">
value="text">

$this->get_field_name( 'page' ), 'show_option_none' => __( 'None', 'advance-widget-pack' ), 'selected' => $instance['page'] ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- wp_dropdown_pages() echoes its own already-escaped

id="get_field_id( 'posts_link' ) ); ?>" name="get_field_name( 'posts_link' ) ); ?>" />