我已经开发了几天的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
等代码。
有人可以帮助我摆脱迷宫,哎呀!
答案 0 :(得分: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都会礼貌地执行您的功能。