Questions tagged «actions»

在整个WordPress核心的特定点执行的事件的名称。

1
add_role()只运行一次?
我惊讶地发现add_role()修改了数据库,并且如果角色已经存在则失败。这里有两个含义,一个比另一个严重:1)如果您正在开发并更新add_role代码,则必须首先remove_role()2)一旦正确,就永远不必运行该代码再次。 因此,通常我一直将add_role()放在wp_loaded动作挂钩中。并且由于我正在开发中,所以我还在add_role之前添加了remove_role(),因此可以确定,如果我修改了大写字母列表,它将实际上生效。 但是很明显,每次访问博客页面时都在运行此命令。好的,我可以将其置于仅限管理员的操作中,也可以在“用户”或“工具”下创建一个插件页面,该角色可以一次创建。我想我希望有一个更简单,更优雅的解决方案。 我不认为这里有一次run_once动作吗? 还是最佳实践只是添加角色,然后多次使用add_cap()?即使那样,我仍然认为add_cap正在访问数据库。 仅考虑减少不必要的数据库访问的最佳方法。您的最佳做法是什么?

5
after_setup_theme始终运行
我正在为一些教职员工设置一个儿童主题,作为主题的一部分,我希望在激活主题时激活一些插件。因此,自然地,我使用了after_setup_theme动作并调用了我的设置函数。它运行良好,但它可以在每个请求(管理员和其他请求)上运行。我通过将其添加到设置功能的末尾来证明了这一点: echo '<script type="text/javascript">alert("This action was run")</script>'; 结果,每个管理员请求和每个前端请求都会收到一个JavaScript警报(我有一个网络设置,因此显然在该主题未处于活动状态的网站上,它没有运行该功能) 所以问题是,这是一个错误吗?我在某种程度上做错了吗?这是我正在使用的完整代码: add_action( 'after_setup_theme', 'fwp_setup' ); function fwp_setup(){ // -- Unrelated code remove for the sake of brevity require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php'); activate_plugin('enable-media-replace/enable-media-replace.php'); activate_plugin('seo-image/seo-friendly-images.php'); activate_plugin('w3-total-cache/w3-total-cache.php'); echo '<script type="text/javascript">alert("This action was run")</script>'; } 任何见解将不胜感激!


2
删除子级中的父主题动作
我正在从Storefront创建一个子主题。 现在,我想删除子主题中的这些操作 add_action( 'woocommerce_before_shop_loop','storefront_sorting_wrapper',9 ); 通过此功能: add_action( 'after_setup_theme','remove_action', 100 ); function remove_action() { remove_action( 'init', 'woocommerce_before_shop_loop'); } 但这不起作用!

2
如何做动作并获得返回值?
因此,存在以下情况。 我添加了一个从数据库中清除日志的操作: add_action( 'myplugin_clean_logs', array( 'MyPlugin_Logs', 'clean_logs' ) ); 现在,我想定期运行此操作: wp_schedule_event( current_time( 'timestamp' ), 'daily', 'myplugin_clean_logs' ); 并手动执行: do_action( 'myplugin_clean_logs' ); 该方法MyPlugin_Logs::clean_logs返回受影响的行的计数;如果其他方向相反,则返回false。 现在,我要显示已删除的行数。我会想象这样的事情: $affected_rows = do_action( 'myplugin_clean_logs' ); echo $affected_rows . ' entries have been deleted.'; 但是由于do_action不会返回任何值,因此我不知道如何获取返回值。 我是否应该在手动运行时直接执行该方法,但对计划事件使用操作?
10 actions 

3
删除通过匿名函数添加的操作/过滤器
我必须说,这是一种非常糟糕的坏习惯。最近两个小时用了一个解决方案,以删除通过匿名函数添加的操作和过滤器。 这是父主题上使用的代码,我需要将其删除。 /** * Add custom columns to admin comments grid * * Rate that user set. */ add_filter( 'manage_edit-comments_columns', function( $default ) { $columns['smr_comment_rate'] = __( 'Rate', 'txtdmn' ); return array_slice( $default, 0, 3, true ) + $columns + array_slice( $default, 2, NULL, true ); }); 得到了toscho的答案,沉迷于此,但没有帮助。那么,是否还有其他选择可以删除通过匿名函数添加的操作/过滤器? 谢谢

1
使用jQuery删除wp_options中存储的数据
我想知道是否有人可以进一步建议我解决我的问题。我的插件的一部分存储日志文件用于调试目的。我已经使用jquery和wp_localise_script在管理页面的(div#log)中成功显示了它们。我有一个删除这些日志的按钮,但不确定如何处理。我觉得ajax在这里可能会派上用场,但不确定从哪里开始。 这是我的代码的相关部分: admin_enqueue_scripts(操作) $args = array(get_option('wow_tweets_log'));//log files fetched from wp_options table wp_enqueue_script('wow_tweet');//registered earlier on with jQuery dependency wp_localize_script('wow_tweet', 'wow_vars', $args); 管理员页面 <tr><th scope="row"><strong>Debugging</strong></th><td> <div id="debug" class="button-primary">Debug</div><!--debug button shows logs--> <div id="hide_debug" class="button-secondary">Hide</div><!--debug button hides logs--> <div id="clear_log" class="button-secondary">Empty Log</div><!--Press to delete logs--> </td></tr> <tr><th scope="row"></th><td><div id="log"><!--Logs show here--></div></td></tr> Java脚本 jQuery(document).ready(function() …
10 jquery  ajax  actions  options 

2
何时使用add_action('init')vs add_action('wp_enqueue_scripts')
在主题的functions.php中,我调用add_action以获得对加载jquery位置的控制(在页脚以及主题的其他脚本中)。 我遇到的问题是,当我使用add_action('wp_enqueue_scripts')时,只有在未加载任何插件的情况下,它才会启动。但是,add_action('init')方法在所有情况下均适用。 我不记得为什么,但是我相信在这种情况下首选add_action('wp_enqueue_scripts')。如果是这样,我如何在所有情况下都能正常工作? 在functions.php中 //if(!is_admin()){add_action('init', 'my_theme_init');} //THIS WORKS ALL THE TIME //add_action('wp_enqueue_scripts', 'my_theme_init'); //THIS ONLY WORKS WHEN NO PLUGINS PRESENT if(!is_admin()) { require_once(TEMPLATEPATH . '/functions_public.php'); } 在functions_public.php中 function my_theme_init() { /* PREVENT DUPLICATE COPIES OF JQUERY FROM PLUGINS **************************************************/ wp_deregister_script('jquery'); /* LOAD THE LOCAL WORDPRESS COPY OF JQUERY AND THEME …

1
wp_headers与send_headers。什么时候使用每个?
我已经看过wp_headers并且send_headers都用于同一件事,而且我想知道您是如何知道要使用哪个以及何时使用的... 在send_headersCodex页面上,有一个添加X-UA-Compatible: IE=edge,chrome=1for Internet Explorer向后兼容性的示例,因为如果太晚加载,meta标记在Intranet网站上通常会失败。 该send_headers示例如下所示: add_action( 'send_headers', 'add_header_xua' ); function add_header_xua() { header( 'X-UA-Compatible: IE=edge,chrome=1' ); } 但是wp_headers也可以这样做: apply_filters ( 'wp_headers', array $headers, WP $this ) add_filter( 'wp_headers', 'wpieeam_headers' ); function wpieeam_headers($headers) { if (!is_admin()) { $headers['X-UA-Compatible'] = 'IE=edge,chrome=1'; } return $headers; } 更新:我实际上只是注意到,几年前关于这个问题的对话或多或少开始了…… 另外,send_headers是否仅与前端有关?我已经看到wp_headers做这样的检查: if ( isset($_SERVER['HTTP_USER_AGENT']) && …

2
添加角色和功能时应该采取什么动作?
我将使用add_role()和$ role-> add_cap()设置新的自定义角色并将新功能附加到现有角色。 我想知道最好的地方在哪里?显然,我可以直接在functions.php中完成它并完成它。但这是最佳做法吗?我是否只需要在admin_init上执行此操作?还是应该在init上执行? 我不完全确定使用init动作挂钩有什么最佳实践,而不仅仅是将直接函数调用放在functions.php中。 感谢您的输入!

3
将帖子移至回收站时执行的功能。
嗨,有一个动作可以在将帖子移到回收站时执行....我尝试了delete_post和Deleted_post。它对每个动作有效(但在每次动作之前和之后均按Codex编写)两次,并且仅当从垃圾箱删除帖子时才显示输出。示例我想向作者发送电子邮件,说明他的帖子由于某种原因已被移至回收站,并更新了一些user_meta。如果我用 add_action('deleted_post', 'emailUser'); 要么 add_action('delete_post', 'emailUser'); 仅当从垃圾箱中删除帖子时,此选项才有效。。。 更新:使其适用于使用 add_action('trash_post', 'emailUser'); 但是函数双重执行的问题仍然存在。。。

10
从外部类中删除动作
我正在尝试执行与此问题类似的操作:使用外部类的remove_action或remove_filter? 我正在尝试删除 <!-- This site is optimized with the Yoast WordPress SEO plugin v1.0.3 - http;//yoast.com/wordpress/seo/ --> 来自插件的消息。 在您对我大吼大叫这可能是不道德的之前,作者说可以在这里做:http : //wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-how-to-remove-dangerous在页面标题中插入酵母消息?回复= 29#post-2503475 我找到了在此处添加注释的类:http : //plugins.svn.wordpress.org/wordpress-seo/tags/1.2.8.7/frontend/class-frontend.php 基本WPSEO_Frontend类有一个名为函数debug_marker,然后通过一个命名的函数调用head,然后将其加入到wp_head在__Construct 我是新手,但是我找到了一种方法来完全去除头部 global $wpseo_front; remove_action( 'wp_head', array($wpseo_front,'head'), 1, 1 ); 但我只想从中删除该debug_marker部分。我试过了但是没用 remove_action( 'wp_head', array($wpseo_front,'head','debug_marker'), 1, 1 ); 正如我说的,我是新手,所以任何帮助都会很棒。

1
请解释这些钩子如何工作
我已经阅读了有关钩子和动作的信息,并且我知道当我们看到do_action('some_hook')它意味着主题的某个位置add_action('some_hook', function() {...});或功能some_hook()存在functions.php。 但是,这是什么?: 从woocommerce / includes / class-wc-checkout.php第943行: public function process_checkout() { try { ///////////// do_action( 'woocommerce_before_checkout_process' ); <----!!! if ( WC()->cart->is_empty() ) { throw new Exception( sprintf( __( 'Sorry, your session has expired. <a href="%s" class="wc-backward">Return to shop</a>', 'woocommerce' ), esc_url( wc_get_page_permalink( 'shop' ) ) ) ); } …
8 hooks  actions 

1
按下设置按钮时触发自定义操作
这是我的第一个wordpress插件,在使其正常工作时遇到了很多麻烦,它几乎可以正常工作,但是我找不到实现此特定目的的方法。 基本上,我有插件的自定义设置页面,它可以毫无问题地保存所有内容,但问题是,如何才能使我的其他按钮(在同一设置页面内)触发这种情况下的同步操作。 因为我的插件在配置后会触发另一个在表上创建/更新记录的操作,但是我第一次需要运行同步来从wordpress的旧帖子中创建/更新记录。 编辑: wsd-parse-api上的插件源代码。

2
最早可靠获取$ post / $ posts的钩子
我可以钩到最早可以$post/$posts在前端和后端访问全局变量的位置的动作是什么?我尝试遍历Codex参考资料,Adam Brown的参考资料,并在源代码中浏览了几次,但运气不好找到一个好的参考资料。 pre_get_posts为时过早;posts_selection如果您想在回调期间进行第二次get_posts()调用,则使用无效。并且template_redirect不会在管理员端运行。the_post可能早于template_redirect前端,但也不会在后端运行。理想情况下,我希望某些东西可以在get_post()/get_posts()返回之前运行,但是我看不到任何类似的东西。 我过去曾使用过the_posts过滤器,但我更喜欢使用操作,因为它在技术上更正确。 现在,我只想插话两次;一次template_redirect用于前端,再一次admin_xml_ns用于后端。不过,我并不是很喜欢,因为我的逻辑在语义上与这两个钩子都不相关,并且这似乎是非常普遍的需求,应该有一个像“ post_get_posts”(ala pre_get_posts)这样的钩子可以工作双方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.