wordpress优化之结合prism.js为编辑器自定义按钮转化代码

原文链接 http://ymblog.net/2016/07/24/wordpress-prism/

继昨天花了一天一夜的时间匆匆写了主题Jiameil3.0之后,心中一直在想着优化加速,体验更好,插件更少,到目前为止,博客插件有多说,Crayon Syntax Highlighter代码高亮插件,super cache缓存插件,百度sitemap。在没有缓存的情况下,首页dom初识加载完成(不是document加载完成)的时间为5-6s左右,有缓存的情况下大概为2s左右,觉得慢了,查看源码,发现在首页代码高亮插件的代码也会加载,还有jquery的引入,因为自己已经额外引用了百度jquery的CDN,所以觉得完全没必要,想着怎么换掉。

查了下资料,牛逼的人们总是啥都会整出来,看到Prism.js,处理一下只需要引用50KB不到的js,而且不依赖jquery,非常nice,使用prism.js的具体过程请看这篇文章:wordpress无插件实现sublime代码高亮显示

用过的同学就会发现,尼玛即使那样做了,在后台编辑文章时的体验特差啊啊啊,心灰意冷!因为要在文本模式下插入指定的代码,再切换回可视化,而这样切换,光标及可编辑的位置就变得模糊而不可调整,简直了,而且添加的代码还要将标签转义才能够正常显示。巨坑!

后来动动脑子想到,自己手动写个转化工具网页不也是可以?于是就开始着手了。

实现的目的只想把代码拷进去,点一下按钮,再点一下复制就可以去粘贴代码到编辑器 了

于是结构看起来是这样的:

<div class="box">
  <div class="h">
    选择语言:<select id="lang"></select>
    <a href="javascript:;" id="copy">复制代码</a>
    <a href="javascript:;" id="render">转化</a>
  </div>

  <textarea id="code" placeholder="粘贴源代码"></textarea>
  <textarea id="box" placeholder="复制生成后的代码"></textarea>
</div>

  

关于语言选择当然不能写死,万一以后要增加呢,所以我们定义数组动态添加:

var la = ["html", "js", "css", "php", "java", "jsx", "git", "nginx", "yaml", "scss", "sass", "c", "c++", "CoffeeScript", "go", "jade", "sql", "json", "less", "python"];

for (var i =0; i < la.length; i++) {
  str = document.createElement("option");
  str.value = la[i]
  str.innerHTML = la[i];
  lang.appendChild(str);
}

  

当点击转化时,转义html标签为实体后,首位添加上prism插件必须的pre标签和行号:

render.addEventListener("click", function () {
  var content = code.value;
  content = content.replace(/</g, "<").replace(/>/g, ">");

  str = ‘<pre class="line-numbers"><code class="language-‘+ lang.value +‘">\n‘;
  str += content;
  str += "\n</code></pre>";

  box.value = str;
}, false);

  

然后是点击复制就将目标代码复制到剪切板:

copy.addEventListener("click", function () {
  box.select();
  document.execCommand("Copy");
});;

  

就这样完成,但是还是有个小坑,我在写的时候发现了,要粘贴代码的时候需要手动切换到文本模式,粘贴完代码后还得切换到可视化,就这个巨坑,而且代码样式不能预览,不过比之前好多了,为了不用那么冗余的插件,为此也算是值了。完工后的界面是这样子的。请戳链接:demo,转载请注明连接。

那么问题又来了,我不可能每次手动输入这个地址吧,多麻烦?我想要在后台写文章的时候添加一个按钮跳转到我自定义的这个页面,万能的网友总是一如既往的牛逼,有2中解决办法:

  1. 在后台左侧界面添加自定义菜单
  2. 在编辑器界面添加按钮跳转

很显然,我会先择后者 ,它们看起来分别是这样的:

两者的实现方式分别为:

// my_add_pages() 为 ‘admin_menu‘ 钩子的回调函数
function my_add_pages() {
    // 第一个参数‘Help page‘为菜单名称,第二个参数‘使用帮助‘为菜单标题
    // ‘manage_options‘ 参数为用户权限
    // ‘my_toplevel_page‘ 参数用于调用my_toplevel_page()函数,来显示菜单内容
    add_menu_page(‘Help page‘, ‘使用帮助‘, ‘manage_options‘, __FILE__, ‘my_toplevel_page‘);
}

// my_toplevel_page() 用于显示菜单的内容,填写菜单页面的HTML代码即可
function my_toplevel_page() {
    echo ‘
    这里填菜单页面的HTML代码
    ‘;

    // 如以下示例代码。 wrap 类是WordPress构建好的css类,可以在你的HTML代码中使用
    /*
    echo ‘
    <div class="wrap">
    <h2>使用帮助</h2>
    <p>这里是使用帮助,通过阅读本文你将了解本程序的使用!有事请<a href="#">与我联系</a></p>
    </div>
    ‘;
    */
}

// 通过add_action来自动调用my_add_pages函数
add_action(‘admin_menu‘, ‘my_add_pages‘);

  

这段代码的参考文章是:WordPress后台添加侧边栏菜单。后者的实现方式是:

add_action(‘media_buttons‘, ‘add_my_media_button‘);

function add_my_media_button() {
    echo ‘<a href="#" id="insert-my-media" class="button">Add my media</a>‘;
}

这段代码参考的是:如何给wordpress的编辑器添加一个自定义按钮,并且实现插入功能

这样点击添加代码块,就会跳转到自定义的转化代码的html页面。

原文链接 http://ymblog.net/2016/07/24/wordpress-prism/

时间: 2024-08-08 04:25:23

wordpress优化之结合prism.js为编辑器自定义按钮转化代码的相关文章

板邓:wordpress去掉头部多余的js / css/ feed

wordpress去掉头部多余的js 复制代码添加到function.php文件 /** * Disable the emoji's去掉头部自动加载的js */ function disable_emojis() { remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove

WordPress优化必备插件

1.文章URL链接结构的优化 Permalink里面要包含postname.一般的服务器都支持mod_rewrite功能,使用这个功能可以优化Permalink(永久链接),在Option-Permalink里的Common options里进行设置,我比较倾向于使用/%year%/%monthnum%/%postname%.html这种链接结构,一来链接目录只有两级,利于索引,二来这种链接结构和Blogspot和Movable Type的链接结构一致,比较利于系统平滑迁移或切换.postnam

【翻译】如何在AJAX生成的内容中再次运行Prism.js

一.前言 最近用一个十分轻量级的网页代码高亮Js库,应用到项目中发现了一个问题,对于静态的已经写好的代码,Prism的高亮插件是没有问题的,但是通过Ajax异步获取数据并修改DOM时发现,Prism高亮插件失效了,经过各种调试还是没办法解决,最后终于找到了解决办法.原文是英文版的,我做了简要的翻译,如有不妥之处还请指出.以下是原文地址: http://schier.co/blog/2013/01/07/how-to-re-run-prismjs-on-ajax-content.html 原标题:

WordPress优化:6种方法加快WordPress网站运行

WordPress作为一个平台,本身具有非常良好的编码,性能也不错. 但是有些人选择WordPress建站后,总喜欢装一大堆拖慢网站速度的垃圾插件,然后选一个垃圾的虚拟主机.当然,即使你没有在自己的WordPress网站上面做一些傻逼的事情,你的网站也还是有很多带改进的地方.下面是一些对WordPress网站进行优化的常规性方法,也许对你有些帮助,可以提高你的WordPress网站的性能,加快网站运行. 这里有好多个个优化方法(有一些是常规性的,大家都知道:有些不是),看你如何去选择了. 当然还

js 语法高亮插件之 Prism.js

之前也介绍过几款语法高亮插件<为博客园选择一个小巧霸气的语法高亮插件>以及关于他们的综合性能<再议 语法高亮插件的选择>.今天在小影志博客看到<使用 Prism.js 实现漂亮的代码语法高亮>于是心血来潮去看了下,顺便测试了下性能.打开 Prism.js 官网,看到 Used By..我勒个去,来头不小啊. 然后看了下例子,果然思路不错,非常有意思的一个插件,于是乎我就下载到本地进行 jQuery 高亮渲染测试.测试方法和以前一样,为了和之前的插件对比,当然我的电脑也没

prism.js——让网页中的代码更好看

粗放的代码展示 有时候,网页中会插入代码.直接把代码放入<pre></pre>标签和<code></code>标签里,也算是可以在页面中显示出来. 比如下面这样的: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>直接写代码</title> </hea

WordPress 5.0禁用古滕堡编辑器的方法

WordPress 5.0正式版使用了古滕堡编辑器,非常不习惯,没以前的经典编辑器好用.那么怎么回到以前的编辑器呢?我们可以使用Classic Editor经典编辑器做为插件方式,安装Classic Editor插件回到经典编辑器,这个方法最简单. 还有一个方法就是禁用古滕堡编辑器,在你的WordPress主题的functions.php中插入代码禁用.下面总结下WordPress 5.0禁用古滕堡编辑器的方法: 第一步: 1.使用Classic Editor经典编辑器插件 2.WordPres

js深入学习-回调函数之代码复用

在js中经常回有一个代码块在多个地方重复利用,这种做法不利于代码的优化,同时对于后期人员的维护也是一个麻烦,假如后期人员需要修改重复利用的代码块,往往会出现只修改其中一处而导致问题,其实处理很简单. 把重复利用的代码块抽出来单独写成一个函数.别的地方直接调用这个函数就行了. 例如有 两个函数F1,F2,都会执行代码块CODE1,我们可以CODE1封装成F3, funcitn F1(){ F3 } funcitn F2(){ F3 } 但是实际情况中会出现这种情况,F1中需要执行F3,F4,且F3

javascript获取ckeditor编辑器的值(实现代码)

CKeditor编辑器是FCKeditor的升级版本想对于FCK来说,确实比较好用,加载速度也比较快以下是如果通过JS获取CKeditor编辑器的值,用于表单验证 if(CKEDITOR.instances.content.getData()==""){alert("内容不能为空!");return false;} content是textarea的name下次发下CKeditor的配置还有上传配置,我只弄了PHP的上传 刚有个朋友反应说FIREFOX下不能判断为空