WordPress
プラグインの開発
サーチ…
構文
- add_action(文字列$タグ、呼び出し可能$ function_to_add、int $ priority = 10、int $ accepted_args = 1)
- add_filter(文字列$タグ、呼び出し可能$ function_to_add、int $ priority = 10、int $ accepted_args = 1)
パラメーター
パラメータ | 詳細 |
---|---|
$タグ | (string)(必須)$ function_to_addコールバックをフックするフィルタの名前。 |
$ function_to_add | (callable)(必須)フィルタが適用されたときに実行されるコールバック。 |
$ priority | (int)(オプション)特定のアクションに関連付けられた関数の実行順序を指定するために使用します。下位の数値は以前の実行に対応し、同じ優先度を持つ関数は、アクションに追加された順に実行されます。デフォルト値:10 |
$ accepted_args | (int)(オプション)関数が受け付ける引数の数。デフォルト値:1 |
備考
プラグインフックが動作する方法は、WordPressが実行されている間、WordPressがその時点で実行する機能を登録しているプラグインがあるかどうかをチェックし、そうであれば機能が実行されることです。これらの関数は、WordPressのデフォルト動作を変更します。
フックには2種類あります。
フィルタを使用すると、WordPressの実行中にデータの値を変更することができます。フィルタのコールバック関数は、変数に渡され、変更されてから返されます。それらは孤立した方法で動作することを意図されており、グローバル変数や関数外の他のものには決して影響しません。
対照的に、 アクションはWordPressの動作を追加したり、WordPressの動作を変更することを可能にします。あなたのコールバック関数は、WordPressの実行中の特定のポイントで実行され、ユーザーに出力をエコーするか、データベースに何かを挿入するなど、何らかのタスクを実行できます。
フィルタ
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';
}
アクション
add_action('wp_head','hook_javascript');
function hook_javascript() {
$output="<script> alert('Page is loading...'); </script>";
echo $output;
}
プラグイン開発の例:お気に入りのソングウィジェット
<?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 }
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow