1

我已经开发 wordpress 好几天了,但是我没有找到像这样的方法:add_action、add_filter、user_can,我不知道他们指的是什么功能。更糟糕的是,我不知道参数,今天我想在用户列表管理面板中添加一个列,我幸运地找到了一个教程,这是代码

add_filter( 'manage_users_columns', 'add_user_column');
function add_user_column( $columns){
     $columns['available_stickers'] = __('Stickers Available', 'available_stickers');
     return $columns;   
}
add_filter('manage_users_custom_column',  'add_user_column_value', 10, 3);
function add_user_column_value( $value, $column_name, $user_id ){
     if ( 'available_sticker' == $column_name)
          $value = get_user_meta($user_id,"available_stickers",true);
     return $value;
}

甚至以为我做到了,但我不知道参数manage_users_columns来自哪里或为什么我应该使用manage_users_columns 而不是其他代码?困惑,他们也有匹配的代码等apply_filter。有人可以帮助我走出迷宫,哎呀!

4

1 回答 1

2

WordPress 设计精美,因为它所做的大部分操作都不是直接执行的,而是通过所谓的操作过滤器执行的。这使您(开发人员)可以挂钩任何这些操作。挂钩意味着您可以以非常干净的方式将自己的逻辑挤入 WP 的逻辑中间,只需声明您希望在使用相应挂钩的地方完成事情即可。更确切地说:

行动

因此,例如,当保存帖子时,WordPress 不只是保存帖子,它通过执行以下行来完成:

do_action( 'save_post', $post_ID, $post );

这是一种为此操作命名的方法(save_post)。这意味着两件事:

1)您可以通过在其他地方使用相同的代码行来执行完全相同的操作。

2)您可以添加自己的逻辑,以在此操作期间执行。如何?只需将您的自定义函数“添加”到操作中,如下所示:

add_action('save_post', 'name_of_the_function_you_want_to_execute_when_post_is_saved');

所以 'save_post' 是钩子的名称,add_action让您可以将自己的函数添加到该钩子的操作中并do_action实际执行该操作。

过滤器

过滤器类似于操作,但不是在执行命令时使用,而是用于处理值、对象、字符串或某些文本(“过滤”时)。再次强调,WordPress 不仅可以通过一种名为apply_filters(). 这使您可以像操作一样,将您自己的过滤器实际添加到已应用的过滤器中。因此,当显示帖子的内容时,WP 会执行:

apply_filters('the_content', $post->post_content);

钩子的名字是the_content。如果您使用:

add_filter('the_content', 'your_function_to_execute_to_further_filter_content');

您可以有一个名为的函数,该函数your_function_to_execute_to_further_filter_content()可以将内容作为参数,并在您希望对其应用任何处理后返回过滤后的版本。然后,这种处理将应用于 WP 中使用钩子the_content执行这些过滤器的任何地方(包括 WP 默认过滤器、添加到同一挂钩的插件过滤器以及您自己的过滤器)。

所以在这里,您正在使用这些钩子,这样您就可以在不弄乱 WP 核心代码的情况下干扰 WP 操作。您声明了您希望执行的额外操作,并让 WP 意识到这一点。每当相应的钩子动作或过滤器被执行时,WP 就会有礼貌地执行你的函数。

于 2012-12-13T09:46:55.507 回答