【问题标题】:add_action,add_filter,user_can ect in wordpresswordpress 中的 add_action,add_filter,user_can 等
【发布时间】:2012-12-13 08:56:49
【问题描述】:

我已经开发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 等。 有人可以帮我走出迷宫,哎呀!

【问题讨论】:

  • 一切都在 Wordpress 法典中:codex.wordpress.org/Developer_Documentation
  • 像eclipse一样安装IDE,你会很容易找到函数定义和文档
  • 我认为 stevenlee 更加纠结于钩子的概念,而不是试图找到相应函数的定义。至少我试着在下面回答

标签: wordpress


【解决方案1】:

WordPress 设计精美,因为它所做的大部分操作都不是直接执行的,而是通过所谓的 actionsfilters 执行的。这使您(开发人员)可以挂钩 到这些操作中的任何一个。挂钩意味着您可以以非常干净的方式将自己的逻辑挤入 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 就会有礼貌地执行你的函数。

【讨论】:

  • 哦,谢谢你的回答,我明白了,但我还是很困惑:你给了我一个 do_action('save_post', $post_ID, $post ); 的例子我想知道save_post的真正功能是否存在,我用zend studio刚刚搜索了save_post,但是它打我,它没有出现一个功能,只有save_post的应用。好吧,如果这不是一个功能(我按照你的解释,我得出的结论是save_post只是一个id或为二次开发的开发者说一个名字),我真的很遗憾保存帖子是如何工作的??也提前谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多