ISSET中的“All”是什么($wp_Filter[‘all’])

时间:2016-05-13 作者:nguyen mc

我是WordPress的新手。我试图理解它是如何生成XHTML页面的。我想这是do_action( \'hook-name\' ) , 但我一直坚持对指令的理解isset( $wp_filter[\'all] ) 在阅读函数do\\u action时,因为我不理解这个词的含义all.

它是PHP功能还是WordPress功能?

2 个回复
SO网友:TheDeadMedic

all 只是WordPress开发人员选择的一个字符串,其行为与任何其他钩子都不同。当您连接到all, 您的回调将触发所有其他挂钩。

我不会花太多时间去寻找do_action, 只需知道:

  1. add_action( \'x\', \'whatever\' ) 将意味着whatever 火灾原因do_action( \'x\' )
  2. add_action( \'all\', \'whatever\' ) 将意味着whatever 火灾原因every do_action, 无论挂钩的名称如何

SO网友:prosti

有条件的if ( isset($wp_filter[\'all\']) ) { 您可以在这些钩子创建函数中找到:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array ref_array 或单个参数。“action vs.filter”的另一个区别很简单,action可以执行任何函数/操作,而过滤器名称通常是为获取字符串数据并返回已过滤数据的函数保留的。

    好的,这些就是创建挂钩的方法。钩子确实有名称,您可以在同一个钩子名称上捕获多个函数名称(读:tag)。

    enter image description here

    但是,一旦定义了与特定挂钩关联的所有函数,就需要将所有挂钩名称和关联函数名称存储在某个位置。这就是为什么我们有global $wp_filter 在WordPress中。如果您输出该变量,您将得到如下结果。。。

    Array
    (
        [pre_term_name] => Array
            (
                [10] => Array
                    (
                        [sanitize_text_field] => Array
                            (
                                [function] => sanitize_text_field
                                [accepted_args] => 1
                            )
    
                        [wp_filter_kses] => Array
                            (
                                [function] => wp_filter_kses
                                [accepted_args] => 1
                            )
    
                    )
    
                [30] => Array
                    (
                        [_wp_specialchars] => Array
                            (
                                [function] => _wp_specialchars
                                [accepted_args] => 1
                            )
    
                    )
    
            )
    
    好吧,让我们不要争论这个变量的名称。就我个人而言,我会称之为不同,可能$wp_hooks 因为没有取这个名字。然而,如果我们回到历史中,我们会发现do_action 是自@since 1.2.0apply_filters@since 0.71 (2003年6月9日发布)。这就很好地解释了为什么叫它$wp_filter. 很可能是因为过滤器是在WordPress中首先引入的。后来他们采取了行动。

    就在“TheDeadMedic”所说的基础上。。。

    add\\u action(‘all’、‘whatever’)表示每个do\\u操作触发的内容,而不管挂钩的名称如何。

    我提出了一个问题,为什么我们需要$wp_filter[\'all\']? 仅举几个例子。在未来的WordPress版本中,对系统内部功能进行内省、测试和可能的更多操作。

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private