首先:好主意。我不知道这个任务是否有插件,但我只想把它作为一个新的小插件来实现。
我建议您更改语法,这样它就不会包含html格式的链接。
我将其更改为:
{{previousKnowledge|first=...|second=...}}
以下是我的第一个简单方法:
<?php
/*
Plugin Name: Previous Knowledge
Plugin URI: TODO
Description: TODO
Author: xaeDes
Version: 0.1
Author URI: TODO
License: GPL2
*/
function previous_knowledge_preg_replace_callback( $matches ) {
//$matches[1] contains the \'...\' in \'{{previousKnowledge|...}}\'
$items = explode("|", $matches[1]);
$replaced = \'<div id="previousKnowledge"><ul>\';
foreach( $items as $item ) {
$item_info = explode("=",$item);
$replaced .= "<li><a href=\'${item_info[1]}\'>${item_info[0]}</a></li>";
}
$replaced .= \'</ul></div>\';
return $replaced;
}
/**
* Looks for occurrences of {{previousKnowledge|...}} tags and replaces them by html.
* @param string $content
* @return string
*/
function previous_knowledge_content_filter( $content ) {
return preg_replace_callback(\'#{{previousKnowledge\\\\s*\\\\|(.+)}}#i\',\'previous_knowledge_preg_replace_callback\', $content);
}
add_filter( \'the_content\' , \'previous_knowledge_content_filter\' );
?>
我用你的例子进行了测试,效果很好。
您可以在先前的\\u knowledge\\u preg\\u replace\\u回调(..)中更改输出html。
如何在wordpress中安装:
在wp contents/plugins/中创建一个名为“previous\\u knowledge”(或任何您认为合适的名称)的文件夹。
创建一个名为previous\\u knowledge的php文件。php并将代码粘贴到该文件中。
现在您只需激活它并将“{{previousKnowledge | first=…| second=…}}}进入您的帖子或页面。
Do you want further explanations?