纯代码实现WordPress文章添加运行代码功能

一、首先准备 JS 代码: JS 函数控制运行代码按钮和全选按钮。 //JS代码 function runCo…

纯代码实现wordpress文章添加运行代码功能

一、首先准备 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?ns*?)+/", "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>
类别:WordPress技巧

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册