为了账号安全,请及时绑定邮箱和手机立即绑定

将类、方法和参数传递给 WordPress 函数

将类、方法和参数传递给 WordPress 函数

PHP
慕雪6442864 2023-09-15 17:05:29
将页面添加到您使用的 WordPress 管理员时add_menu_page,它接受可调用的函数/方法。class Foo{    public function __construct()    {        add_menu_page($page_title, $menu_title, $capability, $menu_slug, [$this, 'bar'], $icon_url, $position);    }    public function bar(): void    {        echo 'Hello, World!';    }}我的问题是,我对如何在接受/期望参数时传递参数感到有点困惑bar,例如:class Foo{    public function __construct()    {        add_menu_page($page_title, $menu_title, $capability, $menu_slug, [$this, 'bar'], $icon_url, $position);    }    public function bar(string $name = ''): void    {        echo "Hello, {$name}!";    }}我尝试了几种不同的方法,但似乎无法让它发挥作用:[$this, 'bar', 'Bob']; // Warning: call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members in /wp-includes/class-wp-hook.php on line 287[$this, ['bar', 'Bob']] // Warning: call_user_func_array() expects parameter 1 to be a valid callback, second array member is not a valid method in /wp-includes/class-wp-hook.php on line 287所以看看该文件的第 287 行,它正在使用call_user_func_array,我认为似乎可以在 的$function参数中传递一个参数add_menu_page,但我就是无法让它工作:// Avoid the array_slice() if possible.if ( 0 == $the_['accepted_args'] ) {    $value = call_user_func( $the_['function'] );} elseif ( $the_['accepted_args'] >= $num_args ) {    $value = call_user_func_array( $the_['function'], $args );} else {    $value = call_user_func_array( $the_['function'], array_slice( $args, 0, (int) $the_['accepted_args'] ) );}帮助将不胜感激!
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

您应该能够传递一个匿名函数,其函数体将简单地bar使用适当的参数调用该方法。

匿名函数看起来像这样:

function () { $this->bar('Bob'); }

或者,如果您使用 PHP 7.4+:

fn() => $this->bar('Bob')

因此,只需将其作为回调传递,如下所示:

add_menu_page(

  $page_title,

  $menu_title,

  $capability,

  $menu_slug,

  // fn() => $this->bar('Bob'),

  function () {  

    $this->bar('Bob');  

  },

  $icon_url,

  $position

);

注意:我对 WordPress 非常不熟悉,所以这可能不是最合适的方法。


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信