【问题标题】:Why didnt wordpress include parameter in the save_post action refernce?为什么 wordpress 没有在 save_post 操作参考中包含参数?
【发布时间】:2013-08-20 08:22:50
【问题描述】:

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

为什么 Wordpress 没有包含 $post$post_ID 参数及其功能。我只有在查看源代码时才意识到这些参数存在,这些参数实际上是做什么的? 你不认为他们需要在动作钩子引用中包含每个参数,以便我们可以将动作分配给钩子

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    $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 进行开发变得更加容易:)

    【讨论】:

    • 无论如何我可以在不检查源代码的情况下检查钩子的参数
    • 你必须在某个地方找到,否则你无法知道!也许 Codex,别人的代码,只是自己尝试一下,但检查核心可能会让你对正在发生的事情有最完整的感觉。
    【解决方案2】:
    class myObj {
     function on_save_post($post_ID, $post)
     {
      // process here
     }
    }
    add_action('save_post', array('myObj', 'on_save_post'));
    

    这个类 myObj 的地方在于,您将拥有所需的所有参数,因此您可以在 save_post

    中传递所需的所有变量

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 2019-06-14
      • 2011-04-17
      • 2011-07-24
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多