Block_Widget
Sidebar block widget.
class Block_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'sidebar-block',
__( 'Sidebar block', 'text_domain' ),
array(
'description' => __( 'Sidebar block widget.', 'text_domain' ),
'classname' => 'block_widget',
)
);
}
public function widget( $args, $instance ) {
$icon = ( ! empty( $instance['block_icon'] ) ) ? $instance['block_icon'] : '';
$title = ( ! empty( $instance['block_title'] ) ) ? $instance['block_title'] : '';
$link = ( ! empty( $instance['block_link'] ) ) ? $instance['block_link'] : '';
$description = ( ! empty( $instance['block_description'] ) ) ? $instance['block_description'] : '';
// Before widget tag
echo $args['before_widget'];
// Code
echo '<div class="text-center">';
echo '<i class="fa fa-' . $icon . '"></i>';
echo '<p><strong><a href="' . $link . '">' . $title . '</a></strong></p>';
echo '<p>' . $description . '</p>';
echo '</div>';
// After widget tag
echo $args['after_widget'];
}
public function form( $instance ) {
// Set default values
$instance = wp_parse_args( (array) $instance, array(
'block_icon' => '',
'block_title' => '',
'block_link' => '',
'block_description' => '',
) );
// Retrieve an existing value from the database
$block_icon = !empty( $instance['block_icon'] ) ? $instance['block_icon'] : '';
$block_title = !empty( $instance['block_title'] ) ? $instance['block_title'] : '';
$block_link = !empty( $instance['block_link'] ) ? $instance['block_link'] : '';
$block_description = !empty( $instance['block_description'] ) ? $instance['block_description'] : '';
// Form fields
echo '<p>';
echo ' <label for="' . $this->get_field_id( 'block_icon' ) . '" class="block_icon_label">' . __( 'Icon', 'text_domain' ) . '</label>';
echo ' <input type="text" id="' . $this->get_field_id( 'block_icon' ) . '" name="' . $this->get_field_name( 'block_icon' ) . '" class="widefat" placeholder="' . esc_attr__( '', 'text_domain' ) . '" value="' . esc_attr( $block_icon ) . '">';
echo ' <span class="description">' . __( 'Icon from <a href="blank" href="http://fontawesome.io/icons/">Font Awesome</a>.', 'text_domain' ) . '</span>';
echo '</p>';
echo '<p>';
echo ' <label for="' . $this->get_field_id( 'block_title' ) . '" class="block_title_label">' . __( 'Title', 'text_domain' ) . '</label>';
echo ' <input type="text" id="' . $this->get_field_id( 'block_title' ) . '" name="' . $this->get_field_name( 'block_title' ) . '" class="widefat" placeholder="' . esc_attr__( '', 'text_domain' ) . '" value="' . esc_attr( $block_title ) . '">';
echo ' <span class="description">' . __( 'Widget title.', 'text_domain' ) . '</span>';
echo '</p>';
echo '<p>';
echo ' <label for="' . $this->get_field_id( 'block_link' ) . '" class="block_link_label">' . __( 'link', 'text_domain' ) . '</label>';
echo ' <input type="url" id="' . $this->get_field_id( 'block_link' ) . '" name="' . $this->get_field_name( 'block_link' ) . '" class="widefat" placeholder="' . esc_attr__( 'http://...', 'text_domain' ) . '" value="' . esc_attr( $block_link ) . '">';
echo ' <span class="description">' . __( 'Link URL.', 'text_domain' ) . '</span>';
echo '</p>';
echo '<p>';
echo ' <label for="' . $this->get_field_id( 'block_description' ) . '" class="block_description_label">' . __( 'Description', 'text_domain' ) . '</label>';
echo ' <textarea id="' . $this->get_field_id( 'block_description' ) . '" name="' . $this->get_field_name( 'block_description' ) . '" class="widefat" placeholder="' . esc_attr__( '', 'text_domain' ) . '">' . $block_description . '</textarea>';
echo '</p>';
}
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['block_icon'] = !empty( $new_instance['block_icon'] ) ? strip_tags( $new_instance['block_icon'] ) : '';
$instance['block_title'] = !empty( $new_instance['block_title'] ) ? strip_tags( $new_instance['block_title'] ) : '';
$instance['block_link'] = !empty( $new_instance['block_link'] ) ? strip_tags( $new_instance['block_link'] ) : '';
$instance['block_description'] = !empty( $new_instance['block_description'] ) ? strip_tags( $new_instance['block_description'] ) : '';
return $instance;
}
}
function block_register_widgets() {
register_widget( 'Block_Widget' );
}
add_action( 'widgets_init', 'block_register_widgets' );