Cum sa faci propriul Widget in WordPress?

Atunci cand faci teme WordPress pentru clientii tai sau pur si simplu pentru tine, trebuie sa ti pas cu moda si sa adaugi functii noi pentru a avea succes.

Am inceput inca de ceva vreme sa-mi creez propriile functii, propriile pluginuri, pentru ca sa le fie mult mai usor clientilor mei sa-si configureze si aranjeze temele wordpress create de mine.

In acest mic tutorial voi explica cat de usor este sa-ti creezi si tu un simplu widget care sa-l poti folosi in tema blogului/site-ului tau.

Primul pas este sa adauagam urmatorul cod in fisierul functions.php, dupa care il modificam dupa bunul plac.

// creare widget
class wpb_widget extends WP_Widget {
function __construct() {
parent::__construct(


// baza widgetului
'wpb_widget',
// Widget name will appear in UI
__('Ultimele articole actualizate', 'wpb_widget_domain'),
// Widget description
array( 'description' => __( 'Widget care afiseaza ultimele articole actualizate recent', 'wpb_widget_domain' ), )
);
}

// front-end widget
// actiuni ale widgetului
public function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] );
echo $args['before_widget'];
if ( ! empty( $title ) )
echo $args['before_title'] . $title . $args['after_title'];


// DE AICI IN JOS SE POATE ADAUGA COD CARE SA RULEZE IN WIDGET
if (function_exists(ultimele_articole_actualizate)) : ultimele_articole_actualizate(); endif;
echo $args['after_widget'];
}
// panoul admin al widgetului
public function form( $instance ) {
if ( isset( $instance[ 'title' ] ) ) {
$title = $instance[ 'title' ];
}
else {
$title = __( 'Articole actualizate', 'wpb_widget_domain' );
}
// form admin
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<?php
}
// update la widget
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
return $instance;
}
} // clasa wpb_widget se termina aici
// inregistrarea widgetului
function wpb_load_widget() {
register_widget( 'wpb_widget' );
}
add_action( 'widgets_init', 'wpb_load_widget' );