【发布时间】:2013-08-20 08:22:50
【问题描述】:
http://codex.wordpress.org/Plugin_API/Action_Reference/save_post
为什么 Wordpress 没有包含 $post 和 $post_ID 参数及其功能。我只有在查看源代码时才意识到这些参数存在,这些参数实际上是做什么的?
你不认为他们需要在动作钩子引用中包含每个参数,以便我们可以将动作分配给钩子
【问题讨论】:
标签: wordpress
http://codex.wordpress.org/Plugin_API/Action_Reference/save_post
为什么 Wordpress 没有包含 $post 和 $post_ID 参数及其功能。我只有在查看源代码时才意识到这些参数存在,这些参数实际上是做什么的?
你不认为他们需要在动作钩子引用中包含每个参数,以便我们可以将动作分配给钩子
【问题讨论】:
标签: wordpress
$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 进行开发变得更加容易:)
【讨论】:
class myObj {
function on_save_post($post_ID, $post)
{
// process here
}
}
add_action('save_post', array('myObj', 'on_save_post'));
这个类 myObj 的地方在于,您将拥有所需的所有参数,因此您可以在 save_post
中传递所需的所有变量【讨论】: