【问题标题】:add_action hook fails to find declared functionadd_action 钩子找不到声明的函数
【发布时间】:2017-06-18 00:12:47
【问题描述】:

我正在创建一个 WordPress 插件,我需要在其中跟踪是否打开了前端的任何页面或单击了任何链接? 我对此有点空白。谁能告诉我该怎么做才能实现这一目标?

我试过了。

class WP_Adminmsp_Webservice{


    function __construct() {
        add_action( 'init', 'msp_pages_permalink', 10, 2 ); 
}

function msp_pages_permalink($permalink_structure, $post_id )
      {
        echo "called";
      }
}

这显示了这个错误:

call_user_func_array() 期望参数 1 是有效的回调函数 'msp_pages_permalink' not found 或无效的函数名。

【问题讨论】:

  • 你知道add_action是做什么的吗?
  • 是的。我知道并且也有函数 msp_pages_permalink
  • 然后向我们展示代码。 :) 至少是函数声明。
  • 因为似乎msp_pages_permalink 没有真正定义。
  • 现在检查代码

标签: wordpress plugins filter hook


【解决方案1】:

当挂钩一个对象方法时,您需要将包含该方法的对象传递给add_action 调用(而后者又会将其用于call_user_func 调用)。

例如,假设您正在从另一个方法 inside 该对象运行操作,您会这样做:

add_action('init', [$this, 'your_method'],  10, 2 );

其中“your_method”是您需要调用的 (public) 方法的名称。

如果您从对象外部调用add_action,您可以执行以下操作:

$plugin_object = new My_Plugin();
add_action('init', [$plugin_object, "your_method"],  10, 2 )

【讨论】:

  • 让我试试这个
  • ????请尝试更加注意。如果您不按原样发布您需要帮助的代码,您只会让人们浪费时间来帮助您,但如果您向我们提供错误数据,这根本不可能。照原样发布您的代码。
  • 是的。解决了。 add_action('init', array($this, 'msp_pages_permalink'), 10, 2); $这是我错过的
猜你喜欢
  • 2018-03-25
  • 2021-02-02
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 2019-11-12
相关资源
最近更新 更多