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

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

(抱歉我的英语不好,我是法国人) 你好,我目前正在为 Elementor 开发一个插件,这个插件添加了一个小部件,可以导入 .glb 或 .gltf 等 3D 文件,然后使用 lib ThreeJS 显示它们

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

我遇到的这个插件的问题是,当我将它上传到在线 WordPress 上时,在过去的 2 个月里,我使用本地 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 等。我尝试在我的插件中更改很多代码,但在 prod 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.