我正在尝试在 Wordpress 中实现一个简单的基于 Toggle 的样式切换器。该解决方案最初是为 HTML 编写的。可以在这里找到。
可以在那里找到必要的 .js 文件。查看下面 Vitch 的评论以更正 stylesheetToggle.js 文件中的一个错误。
这提供了一个简单的文本链接,我可以将它放入我的模板中,在两个样式表之间切换,无需刷新页面,并且与一个 cookie 链接,该 cookie 会记住用户在站点中其他地方的选择。
这就是我到目前为止所得到的(抱歉,我正在根据我所学到的阅读尝试创建风格切换器的分数来拼凑这些)。
为简单起见,所有文件都在我的主题文件夹的根目录下。
我将此添加到我的functions.php中:
function wpb_adding_scripts() {
wp_register_script('stylesheetToggle', get_template_directory_uri() . '/stylesheetToggle.js', array('jquery'),'1.1', false);
wp_enqueue_script('stylesheetToggle');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );
function wpb_adding_styles() {
wp_register_style('contrast', get_stylesheet_directory_uri() . '/contrast.css');
wp_enqueue_style('contrast');
wp_register_style('white', get_stylesheet_directory_uri() . '/style.css');
wp_enqueue_style('white');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_styles' );
然后在我的 index.php 中我添加了(在顶部,在 get_header(); 上方?>):
<?php wp_enqueue_script("stylesheetToggle"); ?>
在我的 header.php 中,我添加了:
<link rel="stylesheet" type="text/css" href=" ... /style.css" title="white">
<link rel="alternate stylesheet" type="text/css" href=" ... /contrast.css" title="contrast">
<?php wp_enqueue_script("stylesheetToggle"); ?>
注意:样式表的 URL 必须是绝对路径。
这也出现在 header.php 中,位于“head”的结尾和“body”的开头之间:
<script>
jQuery.noConflict();
jQuery(document).ready(function($) {
$(function()
{
// Call stylesheet init so that all stylesheet changing functions
// will work.
$.stylesheetInit();
// This code loops through the stylesheets when you click the link with
// an ID of "toggler" below.
$('#toggler').bind(
'click',
function(e)
{
$.stylesheetToggle();
return false;
}
);
// When one of the styleswitch links is clicked then switch the stylesheet to
// the one matching the value of that links rel attribute.
$('.styleswitch').bind(
'click',
function(e)
{
$.stylesheetSwitch(this.getAttribute('rel'));
return false;
}
);
}
);
});
</script>
在我的相关模板文件中,我添加了:
<a href="#" id="toggler">Focus mode</a>
结果:这要归功于 Vitch 和 David。
页面网址:http ://thiscouldbeparadise.org/change/
“焦点模式”应该切换可用的样式表。