Ajouter une "row" tous les x articles sur wordpress

Un widget de call back

On a vu dans un précédent article comment créer un shortcode avec un lien pour insérer des pubs ou des redirections au sein d’une page.

Aujourd’hui on va revoir le même principe mais en partant d’un widget

Voici un exemple de bouton qu’on pourrait insérer dans une sidebar pour inciter l’utilisateur à aller voir une autre page, ou un site externe

decouvrez-moi

Pour l’exemple, je nomme mon widget « club », je donne la possibilité à l’utilisateur d’écrire un titre, de rajouter un lien et de modifier le texte du lien.Le début de l’url du lien est déjà inséré en dur, ici « http://www.monsite.com/ » et l’utilisateur n’aura qu’a rajouter le slug de la page vers laquelle il souhaite que le lien renvoie (dans le code, représenté par la variable  $link) .

On pourrait modifier cet aspect pour insérer le lien dans sa totalité pour renvoyer par exemple vers un site extérieur.

Petite précision, ici j’utilise la condition if(is_front_page()) pour n’afficher le widget que sur la homepage.

Voici le code du widget dans sa totalité

class Club extends WP_Widget {


function Club()
{
parent::WP_Widget(false, $name = 'Le club', array('name' => 'Le Club', 'description' => 'Lien vers le club'));
}

function widget($args, $instance)
{
if(is_front_page()) {
//Récupération des paramètres
extract($args);
$title = apply_filters('widget_title', $instance['title']);
$link = $instance['link'];
$text = $instance['text'];

//Affichage
echo $before_widget;
if ($title)
echo $before_title . $title . $after_title;
else
echo $before_title . $title . $after_title;
echo '<a href="http://www.votresite.com/"'. $link .'" class="widget_club_more">'. $text .'</a>';
echo $after_widget;

}
}

function update($new_instance, $old_instance)
{
$instance = $old_instance;

//Récupération des paramètres envoyés
$instance['title'] = strip_tags($new_instance['title']);
$instance['text'] = strip_tags($new_instance['text']);
$instance['link'] = strip_tags($new_instance['link']);

return $instance;
}

function form($instance)
{
$title = esc_attr($instance['title']);
$text= esc_attr($instance['text']);
$link = esc_attr($instance['link']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>">
<?php echo 'Titre:'; ?>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</label>
</p>
<p>
<label for="<?php echo $this->get_field_id('text'); ?>">
<?php echo 'Texte'; ?>
<input class="widefat" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" type="text" value="<?php echo $text; ?>" />
</label>
</p>
<p>
<label for="<?php echo $this->get_field_id('link'); ?>">
<?php echo 'Lien'; ?>
<input class="widefat" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" type="text" value="<?php echo $link; ?>" />
</label>
</p>
<?php
}
}
function register_link_widget() {
register_widget( 'Club' );
}
add_action('widgets_init', 'register_link_widget');

Dans le backoffice, onglet Apparence/Widget, l’utilisateur retrouvera le nouveau widget « club » dans lequel il pourra insérer son lien.

club-widgt