WordPress
Développement de plugin
Recherche…
Syntaxe
- add_action (string $ tag, callable $ function_to_add, int $ priority = 10, int $ accepted_args = 1)
- add_filter (string $ tag, callable $ function_to_add, int $ priority = 10, int $ accepted_args = 1)
Paramètres
Paramètre | Détail |
---|---|
$ tag | (string) (Obligatoire) Nom du filtre permettant de raccorder le rappel $ function_to_add. |
$ function_to_add | (callable) (obligatoire) Rappel à exécuter lors de l'application du filtre. |
$ priorité | (int) (Facultatif) Utilisé pour spécifier l'ordre dans lequel les fonctions associées à une action particulière sont exécutées. Les nombres inférieurs correspondent à une exécution antérieure et les fonctions avec la même priorité sont exécutées dans l'ordre dans lequel elles ont été ajoutées à l'action. Valeur par défaut: 10 |
$ accepted_args | (int) (Facultatif) Le nombre d'arguments acceptés par la fonction. Valeur par défaut: 1 |
Remarques
La manière dont les plug-ins fonctionnent est que, à différents moments de l'exécution de WordPress, WordPress vérifie si des plug-ins ont des fonctions enregistrées à exécuter à ce moment-là, et si c'est le cas, les fonctions sont exécutées. Ces fonctions modifient le comportement par défaut de WordPress.
Il y a deux sortes de crochets:
Les filtres vous permettent de modifier la valeur d'une donnée lors de l'exécution de WordPress. Les fonctions de rappel pour les filtres seront transmises via une variable, modifiées, puis renvoyées. Ils sont censés fonctionner de manière isolée et ne devraient jamais affecter les variables globales ou autre chose en dehors de la fonction.
Les actions , en revanche, vous permettent d'ajouter ou de modifier le fonctionnement de WordPress. Votre fonction de rappel s'exécutera à un moment précis de l'exécution de WordPress et peut effectuer une sorte de tâche, comme faire écho à la sortie de l'utilisateur ou insérer quelque chose dans la base de données.
Filtre
add_filter('comment_text','before_comment');
add_filter('comment_text','after_comment');
function before_comment($comment_text){
return 'input before comment'.$comment_text;
}
function after_comment($comment_text){
return $comment_text.'input after comment';
}
action
add_action('wp_head','hook_javascript');
function hook_javascript() {
$output="<script> alert('Page is loading...'); </script>";
echo $output;
}
Exemples de développement de plug-ins: Widget de chanson préférée
<?php
function wpshout_register_widgets() {
register_widget( 'Favorite_Song_Widget');
}
add_action( 'widgets_init', 'wpshout_register_widgets' );
class Favorite_Song_Widget extends WP_Widget {
function Favorite_Song_Widget() {
// Instantiate the parent object
parent::__construct(
'favorite_song_widget', // Base ID
__('Favorite Song', 'text_domain'), // Name
array( 'description' => __( 'Widget for playable favorite song', 'text_domain' ), ) // Args
);
}
function widget( $args, $instance ) {
echo $args['before_widget'];
echo '<h3>Favorite Song Lists:</h3>';
echo $instance['songinfo'];
echo '<a href="' . $instance['link'] . '">Download it</a><br>';
echo $instance['description'];
echo $args['after_widget'];
}
function update($new_abc,$old_abc) {
$instance = $old_abc;
// Fields
$instance['link'] = strip_tags($new_abc['link']);
$instance['songinfo'] = strip_tags($new_abc['songinfo']);
$instance['description'] = strip_tags($new_abc['description']);
return $instance;
}
// Widget form creation
function form($instance) {
$link = '';
$songinfo = '';
$description = '';
// Check values
if( $instance) {
$link = esc_attr($instance['link']);
$songinfo = esc_textarea($instance['songinfo']);
$description = esc_textarea($instance['description']);
} ?>
<p>
<label for="<?php echo $this->get_field_id('link'); ?>"><?php _e('Link', 'wp_widget_plugin'); ?></label>
<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; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('songinfo'); ?>"><?php _e('Song Info:', 'wp_widget_plugin'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('songinfo'); ?>" name="<?php echo $this->get_field_name('songinfo'); ?>" type="text" value="<?php echo $songinfo; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Description:', 'wp_widget_plugin'); ?></label>
<textarea class="widefat" id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" type="text" value="<?php echo $description; ?>"></textarea>
</p>
<p><a href="#" id="add-more-tabs"><?php _e('Add More Tabs', 'wp_widget_plugin'); ?></a></p>
<?php }
}