在 Wordpress 插件中排队 Javascript 和 jQuery
Posted
技术标签:
【中文标题】在 Wordpress 插件中排队 Javascript 和 jQuery【英文标题】:Enqueueing Javascript and jQuery in a Wordpress plugin 【发布时间】:2014-05-29 03:54:53 【问题描述】:我是 php 的初学者,我正在尝试让它配合加载 javascript/jQuery 中的基本测试警报,但未能成功。我正在为 Wordpress 网站创建一个插件,我只需要确保我可以在页面上成功运行 Javascript 程序,然后才能真正开始为它编写。这是我目前所拥有的:
.js 文件只是一个测试警报,用 jQuery 编写。
$(document).ready(function ()
alert("Your plugin's working");
);
PHP 文件是一个非常简单的插件,旨在运行警报。
<?php
/**
* Plugin Name: PanoramaJKM
* Plugin URI: unknown
* Description: Should alert on loading
* Version: 0.1
* Author: Matt Rosenthal
* Author URI: unknown
*/
function loadQuery()
if (!is_admin())
wp_enqueue_script('jquery');
add_action('init', 'loadQuery');
function headsUp()
wp_enqueue_script('alert-js', plugins_url('/js/alert.js', __FILE__), array('jquery'));
add_action('wp_enqueue_scripts', 'headsUp');
?>
每当我尝试在我的 Wordpress 网站上加载插件时,JS 控制台都会向我吐出这个错误:
Uncaught TypeError: undefined is not a function
如果我将我的 alert.js 文件更改为没有 jQuery,我可以获得 JS 警报。但是,我需要 jQuery 来编写最终的插件,我觉得我错过了一些很容易修复的东西。任何帮助将不胜感激!我已经尝试过遵循其他 SO 帖子和一些在线指南的建议,但没有成功。
【问题讨论】:
【参考方案1】:Dave Ross 的回答很到位。我补充一下,这是最常见的格式:
jQuery(document).ready(function($) // <-- $ as shortcut for jQuery
alert("Your plugin's working");
);
你不需要add_action('init', 'loadQuery');
。 jQuery 已作为 alert-js
的依赖项加载,正确的入队位置是动作挂钩 wp_enqueue_scripts
(仅在前端运行)。
【讨论】:
【参考方案2】:WordPress 以无冲突模式加载 jQuery,因为它也附带 Prototype。所以,你不能用$来引用jQuery,你需要拼出jQuery。您的 Javascript 代码必须是:
jQuery(document).ready(function ()
alert("Your plugin's working");
);
或者,您可以将代码包装在一个自执行匿名函数中,该函数在其中定义 $:
(function($)
$(document).ready(function ()
alert("Your plugin's working");
);
)(jQuery);
【讨论】:
【参考方案3】:我认为在 wordpress 中使用 $ 存在问题。尝试使用 jQuery(document).ready(....
【讨论】:
以上是关于在 Wordpress 插件中排队 Javascript 和 jQuery的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Wordpress 中的 17Hats iFrame 中进行样式设置
javascript 如何在WordPress中正确排队jQuery
php Genesis / WordPress - 在儿童主题中注册和排队自定义样式表
php WordPress:注册Gravity Forms样式表,只在联系页面#snippet #WordPress上排队