当我们安装主题和插件时,都会向…
运行代码功能估计需要的人不多,但是博客写前端代码的人应该就需要,因为能够预览代码这样子体验非常好。网上针对wordpress 运行代码的插件和非插件版的方法都已经过时了,最主要的问题还是加入运行框中的代码会自动插入换行符,这直接导致了代码无法运行。网上有很多这样子的例子。但是基本上都是错误的,反正我没要找到正确的,主要原因就是wordpress会自动添加分段标签p,br等等,导致代码不能够预览,相信大家都对这个wordpress自动机制感到很绝望,下面我们来看看怎么来做,下面这个方法完美解决的这些问题。
<script>alert("运行代码测试功能");</script>
一、首先准备JS代码:
JS函数控制运行代码按钮和全选按钮。 //JS代码 function runCode(objid) { var winname = window.open('', "_blank", ''); var obj = document.getElementById(objid); winname.document.open('text/html', 'replace'); winname.opener = null; winname.document.write(obj.value); winname.document.close(); } function selectCode(objid){ var obj = document.getElementById(objid); obj.select(); }
二、functions代码:
网上的大多数办法,都没法逃避wordpress的自动过滤机制,如果代码预览中js存在html标签,那么运行代码将失效,经过我多次研究,写了一个自动替换的短代码方案,这个实在后期进行匹配过滤的,完全可以所见所得。
$RunCode = new RunCode(); add_filter('the_content', array(&$RunCode, 'part_one'), -500); add_filter('the_content', array(&$RunCode, 'part_two'), 500); unset($RunCode); class RunCode { var $blocks = array(); function part_one($content) { $str_pattern = "/(\<runcode(.*?)\>(.*?)\<\/runcode\>)/is"; if (preg_match_all($str_pattern, $content, $matches)) { for ($i = 0; $i < count($matches[0]); $i++) { $code = htmlspecialchars($matches[3][$i]); $code = preg_replace("/(\s*?\r?\n\s*?)+/", "\n", $code); $num = rand(1000,9999); $id = "runcode_$num"; $blockID = "<p>++RUNCODE_BLOCK_$num++"; $innertext='<h3>代码预览</h3><textarea id="'.$id.'" class="runcode">'. $code . '</textarea><input type="button" value="运行代码" onclick="runCode(\''.$id.'\')"/><input style="margin-left: 47px;"type="button" value="全选代码" onclick="selectCode(\''.$id.'\')"/>'; $this->blocks[$blockID] = $innertext; $content = str_replace($matches[0][$i], $blockID, $content); } } return $content; } function part_two($content) { if (count($this->blocks)) { $content = str_replace(array_keys($this->blocks), array_values($this->blocks), $content); $this->blocks = array(); } return $content; } }
参考CSS:
.runcode{ width: 100%; font-size:13px; padding:10px 15px; color:#eee; background-color: #263540; margin-bottom:5px; border-radius:2px; overflow:hidden }
运行方法
在撰写文章时切换到html模式,输入以下标签即可
<runcode>//这里贴要运行的代码</runcode>
微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!
需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!