为什么wordpress不包含save_post操作引用中的参数?

时间:2013-08-20 08:22:51

标签: wordpress wordpress-plugin

http://codex.wordpress.org/Plugin_API/Action_Reference/save_post

为什么Wordpress没有包含$post$post_ID参数及其功能。我知道这些参数只有在我检查源代码时才存在,这些参数实际上做了什么? 你不认为他们需要在action钩子引用中包含每个参数,以便我们可以为钩子

分配动作

2 个答案:

答案 0 :(得分:1)

$post保存正在保存的post对象。 $post_ID保存正在保存的帖子的ID。

在进行add_action通话时,您可以在回调函数中获取这些参数。

例如

add_action( 'save_post', 'my_save_function', 10, 2 );

10表示优先级 - 默认值为10,数字越小,优先级越高(即先前运行)。

最后一个参数中的'2'是要传递给回调的参数数量。默认值为1,但正如您所述,此处可以有2个参数,因此如果需要它们,您可以将值放大以获得它们。

function my_save_function( $post, $post_ID ) {

   // Do stuff here.

}

有许多动作/过滤器具有可变数量的参数,这些参数是隐式未知的,因此这样做可以使代码灵活。

为了回答为什么它没有包含在保存回调中 - 在那个实例中不需要它。 $post对象提供了一种访问ID的简单方法。您可能希望将它包含在您自己的钩子中 - 也许如果您因任何原因改变对象,但实际上有无限的可能性。

总是最好做你已经完成的事情,并检查核心是否有这样的事情,了解核心是什么,使得使用WordPress更容易开发:)

答案 1 :(得分:0)

class myObj {
 function on_save_post($post_ID, $post)
 {
  // process here
 }
}
add_action('save_post', array('myObj', 'on_save_post'));

此类 myObj 的位置是您拥有所需的所有参数,因此您可以在 save_post

中传递所需的所有变量