Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更改Wordpress中的操作优先级?_Php_Wordpress - Fatal编程技术网

Php 如何更改Wordpress中的操作优先级?

Php 如何更改Wordpress中的操作优先级?,php,wordpress,Php,Wordpress,我使用的是儿童主题的主题框架。它有很多钩子,但我特别关注的是thematic_header()。topical_header()钩子添加以下操作(通过add_操作): 行动的内容是不相关的 我的问题是:我如何改变这五项行动的优先次序。例如,我希望在thematic_brandingopen()之前加载thematic_access()。我能找到的唯一方法是删除并重新添加操作,ala: <?php function remove_thematic_actions() { re

我使用的是儿童主题的主题框架。它有很多钩子,但我特别关注的是thematic_header()。topical_header()钩子添加以下操作(通过add_操作):


行动的内容是不相关的

我的问题是:我如何改变这五项行动的优先次序。例如,我希望在thematic_brandingopen()之前加载thematic_access()。我能找到的唯一方法是删除并重新添加操作,ala:

<?php
  function remove_thematic_actions() {
    remove_action('thematic_header', 'thematic_access');
    add_action('thematic_header', 'thematic_access', 0); //puts it above thematic_brandingopen
  } 
  add_action ('init', 'remove_thematic_actions');
来自

如果使用默认的 10,则还必须在调用中指定优先级 删除操作()

因此,我认为您可以首先使用以下方法删除

remove_action('thematic_header', 'thematic_brandingopen', 1);
remove_action('thematic_header', 'thematic_access', 9);
然后使用不同的
优先级再次添加

add_action('thematic_header', 'thematic_access', 1);
add_action('thematic_header', 'thematic_brandingopen', 2);

不是自我推销,但我已经做了一些工作,通过一个名为WordPress的插件提供了一个非编码解决方案。“我的插件”允许您通过UI设置各种已注册挂钩的优先级,并在运行时进行重写,这样代码就不会被修改。

为了防止这对某人有所帮助,变量操作存储在is中

global $wp_filter;
var_dump( $wp_filter[$hook_name] );

这是一个数组,在添加操作时,键是优先级。

是的,这就是我一直在做的。我的问题是,是否有办法直接访问阵列/WP用于存储操作优先级的任何内容。我将继续这样做,因为我太懒了,无法深入挖掘WP源代码。我觉得奇怪的是,WP没有提供一种在不删除和重新添加行动优先级的情况下改变行动优先级的方法。Cheers我认为这是一个类属性,可以声明为私有/受保护,但不能声明为公共。这可能是不可能直接访问的,IMO。为了防止这对某人有所帮助,所有挂接的操作都存储在一个名为$wp_filter的全局变量中,该变量是一个以键为挂接名称的数组。谢谢!我一直在寻找一个编码解决方案,但至少,这是一个有趣的解决方案。继续努力!:)这很有帮助,因为我很难使用类方法作为回调删除类中的操作。关于如何“适当地”删除操作,有各种各样的答案,但它们都非常复杂,并且有条件地工作。我刚刚添加了全局$wp_过滤器;和取消设置($wp_filter['hookname'][优先级]);
global $wp_filter;
var_dump( $wp_filter[$hook_name] );