WordPress
Plugin-Entwicklung
Suche…
Syntax
- add_action (String $ tag, aufrufbare $ function_to_add, int $ Priorität = 10, int $ akzeptierte_args = 1)
- add_filter (String $ tag, aufrufbare $ function_to_add, int $ Priorität = 10, int $ akzept_args = 1)
Parameter
Parameter | Detail |
---|---|
$ tag | (Zeichenfolge) (Erforderlich) Der Name des Filters, an den der $ function_to_add-Callback angehängt werden soll. |
$ function_to_add | (aufrufbar) (Erforderlich) Der Rückruf, der ausgeführt werden soll, wenn der Filter angewendet wird. |
$ Priorität | (int) (optional) Wird verwendet, um die Reihenfolge anzugeben, in der die einer bestimmten Aktion zugeordneten Funktionen ausgeführt werden. Niedrigere Zahlen entsprechen der früheren Ausführung, und Funktionen mit derselben Priorität werden in der Reihenfolge ausgeführt, in der sie der Aktion hinzugefügt wurden |
$ Accepted_args | (int) (Optional) Die Anzahl der Argumente, die die Funktion akzeptiert. Standardwert: 1 |
Bemerkungen
Die Funktionsweise von Plugins besteht darin, dass WordPress zu verschiedenen Zeitpunkten während der Ausführung von WordPress prüft, ob Plugins registrierte Funktionen zu diesem Zeitpunkt ausgeführt haben. Wenn ja, werden die Funktionen ausgeführt. Diese Funktionen ändern das Standardverhalten von WordPress.
Es gibt zwei Arten von Haken:
Mit Filtern können Sie den Wert eines Datenelements während der Ausführung von WordPress ändern. Callback-Funktionen für Filter werden durch eine Variable geleitet, geändert und anschließend zurückgegeben. Sie sollen isoliert arbeiten und sollten sich nicht auf globale Variablen oder andere Faktoren außerhalb der Funktion auswirken.
Mit Aktionen können Sie dagegen die Arbeitsweise von WordPress erweitern oder ändern. Ihre Callback-Funktion wird an einem bestimmten Punkt in der Ausführung von WordPress ausgeführt und kann Aufgaben ausführen, z. B. die Ausgabe an den Benutzer oder das Einfügen von Objekten in die Datenbank.
Filter
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';
}
Aktion
add_action('wp_head','hook_javascript');
function hook_javascript() {
$output="<script> alert('Page is loading...'); </script>";
echo $output;
}
Entwicklungsbeispiele für Plugins: Favorite Song Widget
<?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 }
}