当我们创建一个函数来挂钩Wordpress中的动作或过滤器钩子时,我们可能需要一些参数传递给函数,因为我们不是手动调用函数。相反,action或filter hook会在需要时调用它。
我们如何将所有必要的参数传递给函数?动作或过滤器挂钩在调用任何函数时是否提供了一些参数?如果是,有什么方法可以了解任何动作或过滤器钩子的所有参数?
答案 0 :(得分:2)
要了解关于钩子文档的信息,请参阅http://codex.wordpress.org/Plugin_API/Filter_Reference和http://codex.wordpress.org/Plugin_API/Action_Reference。这两个站点将告诉您在调用钩子(动作或过滤器)时wordpress传递的参数的数量和类型。
或者您可以查看wordpress源本身。如果您使用的是像WebStorm这样的IDE,那么您可以执行编辑 - >查找>在路径中查找并搜索钩子名称以查找示例以及调用挂钩的源。
例如,要添加注销操作,请参阅wp_logout()
中的功能pluggable.php
。行do_action('wp_logout');
显示调用操作的位置以及传递的参数(在本例中为none)。
/**
* Log the current user out.
*
* @since 2.5.0
*/
function wp_logout() {
wp_destroy_current_session();
wp_clear_auth_cookie();
/**
* Fires after a user is logged-out.
*
* @since 1.5.0
*/
do_action( 'wp_logout' );
}
endif;
然后,要在主题functions.php中添加要在do_action('wp_logout');
处调用的自定义操作,请添加此
add_action('wp_logout', 'my_on_logout');
function my_on_logout() {
// do what you want to do
echo 'hi mom';
}
如果您从do_action
或do_filter
或文档中看到钩子有参数,那么您可以在add_action
或add_filter
的第四个参数中指定它们,像这样。下面的2
表示要将两个参数传递给publish_product
操作:($post_id, $post)
add_action('publish_product', 'my_on_product_update', 10, 2);
**
* do something when a product is created
* @param int $post_id the post id
* @param WP_Post $post not used
*/
function my_on_product_update($post_id, $post) {
// do action
echo 'hi dad';
}
答案 1 :(得分:2)
您无法通过add_action
传递参数。但是,您可以使用do_action
来自wp文档:
<?php do_action( $tag, $arg ); ?>
$arg
是你可以传递的论据。
所以,你可以这样做:
add_action( 'your_custom_action', 'your_function' );
...
do_action( 'your_custom_action', $your_arguments );