有没有办法以编程方式启用插件?

时间:2021-05-20 作者:saro

<?php

namespace wpplugin\\basic;

class Basic extends \\hg\\wordpress\\AbstractPlugin
{

    public function register()
    {

        add_action(\'wp_ajax_simple_ajax2\', array($this, \'onBasicFunc\'));
        add_action(\'wp_ajax_nopriv_simple_ajax2\', array($this, \'onBasicFunc\'));

    }

    public function onBasicFunc()
    {
        $data = $_REQUEST; // retrieve your submitted data

        wp_send_json($_REQUEST); // return the processed data to the browser as json

        die();
    }
}
当我试图从前端调用它时,上述方法不起作用,但如果我将内容放在函数中。php它按预期工作。我猜这是因为我没有启用插件,但有没有办法通过编程启用它?我的插件应该是在执行ajax调用时返回结果的插件。

2 个回复
SO网友:Rup

是的,有

  • activate_plugin() 在wp admin/includes/plugin中定义。php(通常不会从非管理代码加载,请注意,php插件文件显然无法自行激活)
  • wp cliwp plugin activate 如果您的意思是在不使用管理站点的情况下从命令行激活(必要时,您可以在数据库中的wp\\u选项中编辑active\\u plugins值,但请注意,这是一个PHP序列化值,通过在PHP中取消字符串序列化、修改并重新序列化可能是最安全的编辑方式),那么您可能需要添加一个plugin header comment 到您的文件中使用其中一个。

    然而,让脚本运行的最简单方法是将其放入wp-content/mu插件中must use plugins folder, 你可能必须先创造自己。(这是相当强大的,因此如果必须创建它,最好不要让web服务器用户将其写下来。)

SO网友:Jacob Peattie

问题不是你没有启用插件,而是你只在前端请求上加载了需要在后端请求上加载的代码。

添加这些挂钩时:

add_action(\'wp_ajax_simple_ajax2\', array($this, \'onBasicFunc\'));
add_action(\'wp_ajax_nopriv_simple_ajax2\', array($this, \'onBasicFunc\'));
您正在添加回调函数以在以下情况下运行admin-ajax.php 使用正确的参数调用。问题是前端模板和代码无法在上运行admin-ajax.php, 这意味着您的回调函数没有挂接运行。