我的 Elementor 插件可以在本地运行,但不能在产品上运行

问题描述 投票:0回答:1

我目前正在开发 Elementor 的插件。该插件添加了一个小部件,能够导入 3D 文件,例如

.glb
.gltf
,然后使用 lib ThreeJS

显示它们

我一年前开始网络开发,所以还是个菜鸟,而且,这个项目是我一个人做的,所以可能会被诅咒。我正在实习,开发这个插件是我的使命,我花了将近两个月的时间,自己解决了很多问题,但这个是硬核的。

我在将插件上传到在线 WordPress 安装时遇到了问题。在过去的两个月里,我使用本地 WordPress 来开发我的插件,当我完成它时(大约 1 周前),一位同事想尝试一下,看看我做了什么,但它并没有像我预期的那样工作.

在这里您可以看到它在我本地 WordPress 上的外观: Screen of my draft page

如你所见,有一个 Elementor GIF(我手动添加的,它是我的

div
的背景图片),左边是自定义小部件的参数。

当你想预览页面时: Screen of the preview page

3D 文件出现,您可以自定义所有内容,例如背景颜色、旋转速度、交互性等...

顺便说一句,我的文件夹架构如下所示:

folder architecture

所以它适用于我的本地 WP,但在产品 WP 中,当我单击按钮预览页面时,我的插件不在这里,正如您在这些屏幕截图中看到的:

草稿页面上的控制台:

screenshot of my console on the draft page

预览页面控制台:

screenshot of my console on my preview page

我不知道为什么,在我的本地 WP 上没有问题,但在我的产品 WP 上我的插件不会出现在预览页面(以及帖子页面)上。我的问题的另一个例子,当我在草稿页面上时,有一个

console.log('SCRIPT JS CHARGE');
显示该插件可以工作,但在预览页面上却不起作用。

当然,我尝试停用其他插件,没有任何改变,我也尝试再次删除/添加我的插件,什么也没有。

今天我尝试创建一个新插件,一个非常基本的插件,只有一个实用程序:在页面上添加文本,仅此而已,我还添加了一个脚本 js 执行

console.log("test");
只是为了确定。

与我的主插件相同,我的 console.log 在控制台中,但是当我打开预览页面时,我的插件不在那里。

我还尝试创建插件的新版本,但仍然是相同的插件,所以没有结果。

我的插件可以在本地运行,我以为已经完成了,但是如果我的插件只能在我本地的 WP 上运行,那还有什么用呢?我实习的任务只是创建这个插件,今天我的实习就结束了,所以我会认为这是一个失败。我尝试使用 ChatGPT、StackOverflow、Reddit 等。我尝试在我的插件中更改很多代码,但在产品 WordPress 上仍然没用。

php wordpress plugins widget elementor
1个回答
0
投票

很高兴听到您主动为 Elementor 创建插件。

很难根据您提供的信息确定确切的问题,所以我能做的就是提出一些建议:

  1. 检查兼容性,确保您的开发环境与生产环境紧密配合。验证 WordPress、Elementor 和 PHP 版本在两个环境中是否一致。

  2. 目录结构,我注意到您的文件夹结构与 Elementor 文档中推荐的文件夹结构存在差异。插件目录 /SOW_3D/ 的根级别应包含 SOW_3D.php 文件。最佳做法是为文件夹和主文件指定相同的名称。以下是我建议您重组文件夹的方法:


    sow-3d/
    |-- assets/
    |   |-- images/
    |      |-- elementor.gif
    |   |-- js/
    |      |-- gtlf-loader.js
    |      |-- orbit-controls.js
    |      |-- three.js
    |   |-- includes/
    |      |-- widgets/
    |          |-- script.js
    |          |-- sow3d-widget.php
    |-sow-3d.php

注意:最好遵循单一命名约定,我个人更喜欢这样,但您可以将其更改为您喜欢的方式。

  1. 插件标头,确保您的插件文件包含标准插件标头,以确保 WordPress 识别您的插件,它应该如下所示:

  1. 加载过程中,确保您通过将代码包装到单独的函数中来加载 Elementor 的功能。此代码在 WordPress plugins_loaded 操作挂钩被触发时加载。

以下代码可用于运行该功能:


    function sow-3d() {
    
        // your code here
    
    }
    add_action( 'plugins_loaded', 'sow-3d' );
  1. 调试时,请始终在开发环境中启用 WP_DEBUG,以便尽早捕获错误。

我希望这有帮助,祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.