修复了我的问题,我正在构建一个插件,您可以在其中使用短代码。我添加了短代码并构建了我的标记。在博客帖子中输出短代码非常有效。当我在标记中包含样式和脚本时,它也可以工作。现在我想把它们分开,分别放在各自的文件中
我有一个文件夹,用于存放所有与短代码相关的函数和文件,因此我不需要离开该文件夹即可获取我的styles.css
或我的scripts.js
.
我尝试通过各种尝试链接到它们,但似乎没有任何效果。我使用basic<link>
和<script>
标记以链接到标记内的文件,显然不起作用。
在我初始化短代码的文件中:
add_action( "wp_enqueue_scripts", "registerScriptsStyles" );
public function registerScriptsStyles() {
wp_register_script( \'iw_ShortcodeScript\', plugins_url("ShortcodeScript.js", __FILE__ ), "", "1.0.1", true );
wp_register_style( \'iw_ShortcodeStyle\', plugins_url("ShortcodeStyle.css", __FILE__ ), "", "1.0.1" );
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
}
不起作用。所以我试过了add_action( "init", "registerScriptsStyles" );
add_action( "wp_qneueue_scripts", "enqueueScriptsStyles" );
public function registerScriptsStyles() {
wp_register_script( \'iw_ShortcodeScript\', plugins_url("ShortcodeScript.js", __FILE__ ), "", "1.0.1", true );
wp_register_style( \'iw_ShortcodeStyle\', plugins_url("ShortcodeStyle.css", __FILE__ ), "", "1.0.1" );
}
public function enqueueScriptsStyles() {
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
}
也不起作用。我在某个地方读到,我需要将它们排在我想要的页面中,所以我尝试将它们排在短代码的标记中,这也不起作用。
接下来,我尝试将它们放入需要我的短代码的函数中。
add_shortcode( "Info_Wheel", array( $this, "layout" ) );
public function layout() {
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
require $this->iw_plugin_path . "/Blocks/Pages/ShortcodeAPI/ShortcodeLayout.php";
}
也不起作用。怎么办我似乎找不到我想要的解决方案。我肯定做错了什么,但这是什么?在我看来,阅读这些文档并没有什么帮助,因为它们太模糊了。
同样,短代码可以工作并显示出来,唯一的问题是没有加载样式和脚本。下面是我在编辑器中为短代码API编写的当前代码
如果有人能帮我,那就太好了。
<?php
namespace Blocks\\Pages\\ShortcodeAPI;
use Blocks\\Base\\Controller;
class Shortcode extends Controller {
public function register() {
add_action( "init", "registerScriptsStyles" );
// add_action( "wp_qneueue_scripts", "enqueueScriptsStyles" );
add_shortcode( "Info_Wheel", array( $this, "layout" ) );
}
public function layout() {
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
require $this->iw_plugin_path . "/Blocks/Pages/ShortcodeAPI/ShortcodeLayout.php";
}
public function registerScriptsStyles() {
wp_register_script( \'iw_ShortcodeScript\', plugins_url("ShortcodeScript.js", __FILE__ ), "", "1.0.1", true );
wp_register_style( \'iw_ShortcodeStyle\', plugins_url("ShortcodeStyle.css", __FILE__ ), "", "1.0.1" );
}
public function enqueueScriptsStyles() {
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
}
}
已修复
这是我为修复此问题所做的,就像在回答的评论中已经建议的那样。还有一件事,直到不久前才有人注意到,我在钩子里输入错误了。你仍然可以在上面看到它
所有代码都在我的短代码中。php文件。 class Shortcode extends Controller {
public function register() {
add_action( "wp_enqueue_scripts", array($this, "registerScriptsStyles" ) );
add_action( "wp_enqueue_scripts", array($this, "enqueueScriptsStyles" ) );
add_shortcode( "Info_Wheel", array( $this, "layout" ) );
}
public function layout() : string {
ob_start();
require $this->iw_plugin_path . "/Blocks/Pages/ShortcodeAPI/ShortcodeLayout.php";
return ob_get_clean();
}
public function registerScriptsStyles() {
wp_register_script( \'iw_ShortcodeScript\', plugins_url( "/Blocks/Pages/ShortcodeAPI/ShortcodeScript.js", $this->iw_plugin_path . "Info-Wheel.php"), array(), "1.0.1", true);
wp_register_style( \'iw_ShortcodeStyle\', plugins_url( "/Blocks/Pages/ShortcodeAPI/ShortcodeStyle.css", $this->iw_plugin_path . "Info-Wheel.php"), array(), "1.0.1");
}
public function enqueueScriptsStyles() {
wp_enqueue_script( \'iw_ShortcodeScript\' );
wp_enqueue_style( \'iw_ShortcodeStyle\' );
}
}