관리-도구
편집 파일: info-author-widget.php
<?php if ( ! class_exists( 'Blog_Articles_Author_Info_Widget' ) ) { /** * Adds Blog Articles Author Info Widget. */ class Blog_Articles_Author_Info_Widget extends WP_Widget { /** * Register widget with WordPress. */ public function __construct() { $blog_articles_author_info_widget = array( 'classname' => 'adore-widget author-widget', 'description' => __( 'Retrive Author Information Widget', 'blog-articles' ), ); parent::__construct( 'blog_articles_author_info_widget', __( 'Adore Widget: Author Info Widget', 'blog-articles' ), $blog_articles_author_info_widget ); } /** * Front-end display of widget. * @see WP_Widget::widget() * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { if ( ! isset( $args['widget_id'] ) ) { $args['widget_id'] = $this->id; } $section_title = ! empty( $instance['title'] ) ? $instance['title'] : ''; $section_title = apply_filters( 'widget_title', $section_title, $instance, $this->id_base ); $author_name = ! empty( $instance['name'] ) ? $instance['name'] : ''; $author_designation = ! empty( $instance['designation'] ) ? $instance['designation'] : ''; $author_description = ! empty( $instance['description'] ) ? $instance['description'] : ''; $author_image_url = ! empty( $instance['author_image_url'] ) ? $instance['author_image_url'] : ''; echo $args['before_widget']; ?> <div class="adore-widget-body-wrapper"> <div class="adore-widget-body-wrap-inside"> <?php if ( ! empty( $section_title ) ) { echo $args['before_title'] . esc_html( $section_title ) . $args['after_title']; } ?> <div class="adore-widget-body"> <div class="author-part"> <?php if ( ! empty( $author_image_url ) ) { ?> <div class="author-img"> <?php $sizes = array(); echo '<img src="' . esc_url( $author_image_url ) . '" alt="' . esc_attr( $author_name ) . '" />'; ?> </div> <?php } ?> <div class="author-name-part"> <h3 class="author-name"> <?php echo esc_html( $author_name ); ?> </h3> <p class="author-position"><?php echo wp_kses_post( $author_designation ); ?></p> <div class="author-social-contacts"> <?php for ( $i = 1; $i <= 4; $i++ ) { $link = ( ! empty( $instance[ 'link-' . $i ] ) ) ? $instance[ 'link-' . $i ] : ''; if ( ! empty( $link ) ) : ?> <a href="<?php echo esc_url( $link ); ?>"></a> <?php endif; } ?> </div> </div> </div> <div class="author-details"> <p class="author-description"><?php echo wp_kses_post( $author_description ); ?></p> </div> </div> </div> </div> <?php echo $args['after_widget']; } /** * Back-end widget form. * @see WP_Widget::form() * @param array $instance Previously saved values from database. */ public function form( $instance ) { $section_title = isset( $instance['title'] ) ? $instance['title'] : ''; $author_name = isset( $instance['name'] ) ? $instance['name'] : ''; $author_designation = isset( $instance['designation'] ) ? $instance['designation'] : ''; $author_description = isset( $instance['description'] ) ? $instance['description'] : ''; $author_image_url = isset( $instance['author_image_url'] ) ? $instance['author_image_url'] : ''; ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Section Title:', 'blog-articles' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $section_title ); ?>" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'name' ) ); ?>"><?php esc_html_e( 'Author Name:', 'blog-articles' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'name' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'name' ) ); ?>" type="text" value="<?php echo esc_attr( $author_name ); ?>" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'designation' ) ); ?>"><?php esc_html_e( 'Author Designation:', 'blog-articles' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'designation' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'designation' ) ); ?>" type="text" value="<?php echo esc_attr( $author_designation ); ?>" /> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'description' ) ); ?>"><?php esc_html_e( 'Description :', 'blog-articles' ); ?></label> <textarea class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'description' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'description' ) ); ?>" value="<?php echo esc_attr( $author_description ); ?>"><?php echo wp_kses_post( $author_description ); ?></textarea> </p> <div> <label for="<?php echo esc_attr( $this->get_field_id( 'author_image_url' ) ); ?>"><?php esc_html_e( 'Author Image URL', 'blog-articles' ); ?></label>:<br /> <input type="url" class="img widefat" name="<?php echo esc_attr( $this->get_field_name( 'author_image_url' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'author_image_url' ) ); ?>" value="<?php echo esc_url( $author_image_url ); ?>" /><br /> <?php $image_url = ''; if ( ! empty( $author_image_url ) ) { $image_url = $author_image_url; } $style_attr = ''; if ( empty( $image_url ) ) { $style_attr = 'display:none;'; } ?> <div class="image-preview" style="<?php echo esc_attr( $style_attr ); ?>"> <img src="<?php echo esc_url( $image_url ); ?>" alt="<?php esc_attr_e( 'Preview', 'blog-articles' ); ?>" style="width: 200px;"/> </div><!-- .image-preview --> <input type="button" class="select-img button" value="<?php esc_attr_e( 'Upload', 'blog-articles' ); ?>" data-uploader_title="<?php esc_attr_e( 'Select Image', 'blog-articles' ); ?>" data-uploader_button_text="<?php esc_attr_e( 'Choose Image', 'blog-articles' ); ?>" style="margin-top:5px;" /><br/> </div> <?php for ( $i = 1; $i <= 4; $i++ ) { $link = isset( $instance[ 'link-' . $i ] ) ? $instance[ 'link-' . $i ] : ''; ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'link-' . $i ) ); ?>"><?php echo sprintf( esc_html__( 'Social Link %s :', 'blog-articles' ), $i ); ?></label> <input type="url" class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'link-' . $i ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'link-' . $i ) ); ?>" value="<?php echo esc_url( $link ); ?>"/> </p> <?php } ?> <?php } /** * Sanitize widget form values as they are saved. * @see WP_Widget::update() * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * @return array Updated safe values to be saved. */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = sanitize_text_field( $new_instance['title'] ); $instance['name'] = sanitize_text_field( $new_instance['name'] ); $instance['designation'] = wp_kses_post( $new_instance['designation'] ); $instance['description'] = wp_kses_post( $new_instance['description'] ); $instance['author_image_url'] = esc_url_raw( $new_instance['author_image_url'] ); for ( $i = 1; $i <= 4; $i++ ) { $instance[ 'link-' . $i ] = esc_url_raw( $new_instance[ 'link-' . $i ] ); } return $instance; } } } /** * Enqueue admin scripts for Image Widget * * @since Blog Articles 1.0 **/ function blog_articles_author_info_widget_image_upload_enqueue( $hook ) { if ( 'widgets.php' !== $hook ) { return; } wp_enqueue_media(); wp_enqueue_script( 'author-info-widget-image-upload-script', get_template_directory_uri() . '/assets/js/upload.js', array( 'jquery' ), BLOG_ARTICLES, true ); } add_action( 'admin_enqueue_scripts', 'blog_articles_author_info_widget_image_upload_enqueue' );