我需要在 foreach 循环中动态构建多个 add_action() 函数,循环遍历用户可能创建的各种自定义分类法。
操作 Hook 的名称是“category_add_form_fields”,但 Hook 的“类别”部分会随着自定义分类法的每个名称而变化。
示例 1 因此,如果插件用户创建了一个名为“Colors”的分类法,则 Hook 将为“colors_add_form_fields”并且 add_action 如下所示:
add_action('colors_add_form_fields', 'myFunction',10,2);
示例 2 或者,如果插件用户创建了一个名为“sizes”的分类法,则 Hook 将是“sizes_add_form_fields”,add_action 将是:
add_action('sizes_add_form_fields', 'myFunction',10,2);
因为事先显然无法知道每个用户将命名他们的自定义类别,我使用 foreach 循环将每个类别名称存储为 $customcat,我将其附加到字符串“_add_form_fields”并存储$final 中的结果字符串用于 add_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
作为钩子(Hook)名称应该没有问题。
如果这对您不起作用 - 检查您的 Hook 是否已设置,或者 arg.数字实际上是 2,或者发射序列或除此特定问题之外的任何其他问题..
关于wordpress - 我可以为 Wordpress 的 add_action() 的 Action Hook 参数使用变量而不是字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13738063/