如何在WordPress页面中使用jQuery UI标签?

时间:2011-07-04 作者:OwenP

我想在WordPress 3.1.4页面中使用jQuery UI选项卡。我为VB编写编程教程。NET观众,但也喜欢提供C#源代码,我想使用选项卡让读者在两者之间切换。我可能可以自己安排时间,但这应该是一个“了解jQuery”项目。事实证明,这更像是一个“WTF WordPress”项目。我在JS中几乎没有什么功能,并试图纠正这一点。我不是WP大师,也不想学到更多我需要知道的东西。

我有一个页面,它只是jQuery UI选项卡演示的复制/粘贴。它不起作用;列表和所有div都可见,没有实际的选项卡。我知道这是因为我需要一些CSS,但这是我筋疲力尽的地方。我不相信CSS会让它继续工作,我甚至不知道如何判断问题是CSS、我的JS还是我的WP。在我开始这个项目之前,我的博客“刚刚工作”,这就是我喜欢我不工作的东西的方式。

我尝试的第一件事是将用于jQuery的Google CDN放在我主题的标题中。php。我可以让警报工作,但无论我做什么,标签都不会显示出来。(我现在知道这是因为我显然需要一些CSS。谢谢你没有提到jQuery文档!)所以我开始做一些研究,并意识到WP加载jQuery,就像加载许多插件一样(尽管我只运行垃圾邮件Karma和Askimet)加载Google jQuery可能会引起一些混乱,这是有道理的。经过一些研究,我发现有几个网站建议将wp\\u enqueue\\u script()放在我的标题中。文档列出了一组脚本,所以我添加了“jquery”、“jquery ui核心”和“jquery ui选项卡”。我可以看到加载jQuery的脚本标记(版本1.4.4…)在我的标题中,但其他标记似乎没有效果。我知道它是在“无冲突”模式下加载的,所以通常使用“$()”时使用“jQuery()”。我可以让警报工作,但不能让选项卡工作。我再次表示怀疑,因为我的页面看起来根本没有试图加载jQuery UI。这可能无关紧要,因为我不确定WP是否具有正确的CSS。我看到一些页面建议我必须在页面的页脚中加载jQuery UI,其他页面则声称我需要在函数中添加一些我不懂的东西。php,以及一些其他的解决方案,这些解决方案来自一些太旧而不可信的文章。我不知道下一步该怎么办。

如果我做了一些工作来找出我需要的CSS(再次感谢jQuery“文档”!)我可以让制表符处理本地文件。在WP中,我使用的是二十十主题;我唯一的修改就是添加了SyntaxHighlighter脚本(如果有人告诉我我已经足够接近了,我会禁用它,这应该可以工作了,它们可能就是问题所在。)我今天刚升级到WP 3.1.4。以下是相关文件的内容,您可以查看源代码以查看HTML的外观:

header.php

<?php wp_enqueue_script("jquery"); ?>
<?php wp_enqueue_script("jquery-ui-core"); ?>
<?php wp_enqueue_script("jquery-ui-tabs"); ?>
<script type="text/javascript" src="http://www.owenpellegrin.com/blog/highlight/scripts/shCore.js"></script>
<script type="text/javascript" src="http://www.owenpellegrin.com/blog/highlight/scripts/shBrushCSharp.js"></script>
<script type="text/javascript" src="http://www.owenpellegrin.com/blog/highlight/scripts/shBrushVb.js"></script>
<script type="text/javascript" src="http://www.owenpellegrin.com/blog/highlight/scripts/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="http://www.owenpellegrin.com/blog/highlight/styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="http://www.owenpellegrin.com/blog/highlight/styles/shThemeDefault.css"/>
<script type="text/javascript">
    SyntaxHighlighter.all();
</script>
<meta charset="<?php bloginfo( \'charset\' ); ?>" />
<title><?php
(... the rest of the default TwentyTen header.php ...)

the linked page

<script>
jQuery("document").ready(function() {
    jQuery( "#tabs" ).tabs();
});
</script>

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Nunc tincidunt</a></li>
        <li><a href="#tabs-2">Proin dolor</a></li>
        <li><a href="#tabs-3">Aenean lacinia</a></li>
    </ul>
    <div id="tabs-1">
        <p>Tab 1 content.</p>
    </div>
    <div id="tabs-2">
        <p>Tab 2 content</p>
    </div>
    <div id="tabs-3">
        <p>Tab 3 content</p>
    </div>
</div>
我添加了ready()调用,因为我想知道演示中的代码是否没有运行。我也毫无乐趣地尝试了这种代码变体:

jQuery("document").ready(function() {
    jQuery( "#tabs" ).tabs();
});
我错过了什么?

5 个回复
最合适的回答,由SO网友:Jared Cobb 整理而成

简而言之,您需要在代码中包含jQuery UI CSS“主题”。jQuery UI框架实际上是JavaScript和CSS的组合(看起来您只包含了JavaScript)。

作为一个快速测试,我刚刚将“基本”主题应用于您的代码here. (注意,侧栏上的Manage Resources下有一个指向Google托管的jqueryui.css文件的链接)。

jQuery UI有很多pre-built themes 您可以使用。(请参见“多媒体资料”选项卡)。或者你可以自己滚!非常灵活。

把我的答案延长一点。。。我建议使用Google的CDN而不是内置的jQuery文件,原因有二。

你会得到更新的版本,速度会更快,但你的研究是正确的。。。您不想简单地在标题中包含jQuery CDN引用,因为WordPress不知道您已经包含了它!(您将与其他需要jQuery的插件发生冲突)。一个简单的解决方案是在函数中添加以下代码片段。php文件:

// custom script queues
if (!is_admin()) {
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', ("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"), false);
    wp_enqueue_script(\'jquery\');
}
这段代码基本上告诉WordPress忽略自己版本的jQuery,使用这里的引用,然后将其排队!(现在,如果另一个插件通过WordPress API“请求”jQuery,它将知道它已经加载并准备就绪)。

就我个人而言,我并不担心用jQuery UI来实现这一点。我还没有使用一个插件,专门想自己排队。所以在我的标题中。php我自己也加入了它,还有一个我喜欢的主题:

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/cupertino/jquery-ui.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
祝你的项目好运!

SO网友:Khandaker Toihidul Islam

WordPress已经有很多UI效果了。documentation

第1步。将效果添加到functions.php 主题文件

function add_theme_scripts() {
    wp_enqueue_script("jquery-ui-tabs");
}
add_action( \'wp_enqueue_scripts\', \'add_theme_scripts\' );
第2步。添加HTML

<div id="tabs">
  <ul>
    <li><a href="#tabs-1">Nunc tincidunt</a></li>
    <li><a href="#tabs-2">Proin dolor</a></li>
    <li><a href="#tabs-3">Aenean lacinia</a></li>
  </ul>
  <div id="tabs-1">
    <p>Tab 1</p>
  </div>
  <div id="tabs-2">
    <p>Tab 2</p>
  </div>
  <div id="tabs-3">
    <p>Tab 3</p>
  </div>
</div>
步骤3:将脚本添加到footer.php

<script>
jQuery(document).ready(function($) {
    $(\'#tabs\').tabs();
})    
</script>

SO网友:Neil

您可以使用路径选项卡式小部件插件来实现以下目的:Jquery UI Tabbed Widget Wordpress Plugin

SO网友:SanJaz

在用户函数中添加以下内容。php

function my_scripts_method() {
    wp_deregister_script( \'jquery\' );
    wp_register_script( \'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js\');
    wp_enqueue_script( \'jquery\' );

    wp_deregister_script( \'jquery-ui-core\' );
    wp_register_script( \'jquery-ui-core\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js\');
    wp_enqueue_script( \'jquery-ui-core\' );
}    

add_action(\'wp_enqueue_scripts\', \'my_scripts_method\');


function my_stylesheets_method(){
    wp_register_style(\'myStyleSheets\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/cupertino/jquery-ui.css\');
    wp_enqueue_style( \'myStyleSheets\');
}
add_action(\'wp_print_styles\', \'my_stylesheets_method\');

SO网友:Ryan Bayne

Wordpress。org不再允许加载外部jQuery UI的插件,因为它已经用Wordpress打包。对于任何开发新插件的人来说,这只是一个小小的警告。

结束

相关推荐

如何在WordPress上正确包含jQuery-UI效果

我一直试图在我的wordpress主题中包含jquery ui效果(更具体地说是抖动效果)。到目前为止,我只能包含jQuery脚本,但我真的不知道在哪里放置ui脚本以及如何将它们排队。这是我的密码。这显然行不通: <?php wp_enqueue_script(\"jquery\"); ?> <?php wp_enqueue_script(\"jquery-ui-core\"); ?> <?php wp_head(); ?> <lin