当前位置: 首页 > 知识库问答 >
问题:

寄存器\激活\挂钩不工作-Wordpress

阚小云
2023-03-14

我正在尝试为短代码创建一个插件。但我的激活钩不起作用。插件在我的wp admin/plugins页面中被激活,但在我的代码中没有任何东西可以工作,比如:我的enqueue

if (!class_exists( 'DiliviBlocks' )) {

    class DiliviBlocks {
        public function __construct() {
            $this->setup_actions();
            $this->plugin_dir = plugin_dir_path(__FILE__);
        }
        
        /**
         * Setting up Hooks
         */
        public function setup_actions() {
            register_activation_hook(  plugin_dir_path(__FILE__), array( $this, 'activate_plugin' ) );
        }

        /**
         * Activate callback
         */
        public function activate_plugin() {
            add_action( 'wp_enqueue_scripts', array($this, 'dilivi_blocks_scripts') );
            add_shortcode( 'vans_search_form', array($this, 'vans_search_form_shortcode') );
        }

        public function dilivi_blocks_scripts() {
            wp_enqueue_style( 'dilivi-blocks-plugin-css',  plugin_dir_path(__FILE__) . '/assets/css/styles.css');
            wp_enqueue_script( 'dilivi-blocks-plugin-jquery', plugin_dir_path(__FILE__) . '/assets/js/jquery.js' );
            wp_enqueue_script( 'dilivi-blocks-plugin-js', plugin_dir_path(__FILE__) . '/assets/js/scripts.js' );
        }

        public function vans_search_form_shortcode($atts) {
            return 'Hello World';
        }

    }

    $diliviBlocks = new DiliviBlocks();

 }

请帮帮我。我卡住了

共有1个答案

柴昆杰
2023-03-14

文档说明您只需要插件目录名和初始文件名。您不应该包括它的整个路径。

如果你的插件只包含文件,而不仅仅是__FILE__就足够了。

在您的情况下,它可能是类似于dilivi-block/divili-blocks.php

另外,请注意,函数只会执行一次--当您的插件被激活时。如果它已经处于活动状态,函数将不会执行。您应该知道,每次页面加载时都必须进行排队样式表等操作,因此将它们绑定到一次性钩子上是行不通的。应该为此使用wp_enqueue_scripts钩子。

 类似资料:
  • 我写我的第一个WordPress插件和有问题的register_activation_hook......我想要的是在register_activation_hook中声明一个变量,并在其中一个菜单页面上进行响应。 我已经把我的代码分解成单独的文件,并在下面的两个文件中包含了一个简短的版本: 在test_plugin_settings.php我使用: 我知道test_plugin_settings

  • 我目前正在写一个wordpress插件,我遇到了一些问题。我的功能在插件激活时不运行。。。谁能告诉我问题出在哪里? 但不幸的是,安装功能不起作用......但当外部类中的代码安装功能是工作

  • 我有两台服务器: 1)PHP版本7.0.28-1~dotdeb 8.1 System Linux online 3.16。0-4-amd64#1 SMP Debian 3.16。51-2(2017-12-03)x86_64服务器API FPM/FastCGI虚拟目录支持禁用配置文件(php.ini)路径/etc/php/7.0/FPM 2)PHP版本5.6.34-1~dotdeb 7.1 Syst

  • 我使用的是Laravel6.5,这对PHP和Laravel来说还是新的。当我成功注册时,它会将我返回到相同的注册表单,其输入为空。它成功注册了用户tho,但不会重定向。我也尝试过重写redirectPath()函数,但该函数不起作用。 当我尝试重写其他方法(如ShowRegistrationForm())时,它工作得很好,但我无法让它重定向。 重定向对登录控制器非常有效。 这是我的ontrolle

  • Vim 可以将不同字段剪切或复制到不同寄存器中,您可以从不同寄存器中取出内容后粘贴 "寄存器名称 按下"键和另一个字符键,便可以定义一个寄存器。例如:"a "1 定义寄存器后直接进行操作 "ayy 将当前行复制到寄存器 a 中 "ap 将寄存器 a 中的内容粘贴到光标之后 :registers 查看所有寄存器的内容 通常情况下,寄存器 + (先按",再按 Shift+= )对应

  • 我通过以下方式添加了一个关机挂钩: 它正常工作正常,但当我在Eclipse中单击红色的停止按钮时就不行了。有没有办法在Eclipse中调用关闭挂钩?