1

我正在为自己的网站编写 WordPress 插件,当我尝试在公共静态函数中调用 add_action 时出现错误

class SitemapGeneratorLoader
{
    public static function enable() {
        // Robots.txt request
        add_action( 'do_robots', array( 'SitemapGeneratorLoader', 'callDoRobots' ), 100, 0 );
    }

   /**
    * Invokes the doRobots method of the SitemapGenerator
    */
   public static function callDoRobots() 
   {
      $this->sg = new SitemapGenerator();
      $this->sg->doRobots();
   }
}

同样是如果我使用

add_action('do_robots', array('SitemapGeneratorLoader', 'callDoRobots'), 100, 0);

add_filter('query_vars', array('SitemapGeneratorLoader', 'registerQueryVars'), 1, 1);

add_filter('template_redirect', array( CLASS , 'doTemplateRedirect'), 1, 0);

在某种程度上,WordPress 查询监视器显示错误:找不到“SitemapGeneratorLoader”。

如果我使用“init”,则不会显示错误

有人知道为什么吗?

4

1 回答 1

0

要访问同一类中的函数,请使用

public static function enable() {
     // Robots.txt request
     add_action( 'robots_txt', array( __CLASS__, 'callDoRobots' ), 10, 0 );
}

还要在这里验证你的钩子https://developer.wordpress.org/reference/functions/do_robots/,我认为它应该是'robots_txt'而不是'do_robots'。

于 2020-10-19T16:54:28.700 回答