Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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
对于Wordpress的add_Action()的Action Hook参数,我可以使用变量而不是字符串吗?_Wordpress - Fatal编程技术网

对于Wordpress的add_Action()的Action Hook参数,我可以使用变量而不是字符串吗?

对于Wordpress的add_Action()的Action Hook参数,我可以使用变量而不是字符串吗?,wordpress,Wordpress,我需要在foreach循环中动态构造几个add_action()函数,该循环遍历用户可能创建的各种自定义分类 操作钩子的名称是“category\u add\u form\u fields”,但是钩子的“category”部分会因自定义分类法的每个名称而改变 示例1 因此,如果插件用户创建了一个名为“Colors”的分类法,那么钩子将是“Colors\u add\u form\u fields”,add\u操作如下所示: add_action('colors_add_form_fields',

我需要在foreach循环中动态构造几个add_action()函数,该循环遍历用户可能创建的各种自定义分类

操作钩子的名称是“category\u add\u form\u fields”,但是钩子的“category”部分会因自定义分类法的每个名称而改变

示例1 因此,如果插件用户创建了一个名为“Colors”的分类法,那么钩子将是“Colors\u add\u form\u fields”,add\u操作如下所示:

add_action('colors_add_form_fields', 'myFunction',10,2);
示例2 或者,如果插件用户创建了一个名为“size”的分类法,那么钩子将是“size\u add\u form\u fields”,add\u操作将是:

add_action('sizes_add_form_fields', 'myFunction',10,2);
由于显然无法预先知道每个用户将为其自定义类别命名什么,因此我使用foreach循环,将每个类别名称存储为$customcat,并将其附加到字符串“\u add\u form\u fields”中,并将生成的字符串存储在$final中,以便在add\u action()函数中使用

问题是,尽管我尝试了各种方法将此变量插入add_action(),但它似乎无法识别它们

我搜索了谷歌,但什么也没找到,甚至没有人问同样的问题

有人知道我应该做什么吗?或者,如果变量根本无法使用,是否有其他方法可以使用PHP实现我的目标

这些是我到目前为止尝试过的一些排列

$final = $customcat . "_add_form_fields"; 
$final = "'" . $customcat . "_add_form_fields'"; 

add_action( $final, 'my_function', 10, 2);
add_action( "$final", 'my_function', 10, 2);
add_action( strval($final), 'my_function', 10, 2);

使用
$variable
作为钩子名称应该没有问题。。
如果这对您不起作用-检查是否设置了钩子,或者参数是否正确。数字实际上是2,或者触发顺序或除此之外的任何其他问题。

使用$variable作为钩子名称应该没有问题。。如果这不起作用,请检查是否设置了钩子,或者参数是否正确。数字实际上是2。,事实上你是绝对正确的。我不知道昨晚我做错了什么,但今天它起作用了。也许我只需要睡个好觉!非常感谢!很高兴它成功了——但为了结束这个问题,我将补充这一点作为你接受的答案。