通过functions.php将bbcode[b]、[i]、[code]等添加到WordPress

通过functions.php将bbcode[b]、[i]、[code]等添加到WordPress,php,wordpress,Php,Wordpress,嘿,伙计们,首先我玩过短码,但它们不起作用。我可能有一些冲突(花了几个小时试图找到),但现在,这不是一个选项。但是下面的工作允许我的评论者在他们的评论中使用[img]标记(这些标记被替换为html等价物),我想对其进行扩展 请不要使用插件 我想做的是修改下面的代码,允许[b]、[I]和[code](小写和大写条目)吐出html等价物,以便我的注释在注释时可以使用标准的bbcodes,这与当前函数的工作原理非常相似: function embed_images($content) { $c

嘿,伙计们,首先我玩过短码,但它们不起作用。我可能有一些冲突(花了几个小时试图找到),但现在,这不是一个选项。但是下面的工作允许我的评论者在他们的评论中使用[img]标记(这些标记被替换为html等价物),我想对其进行扩展

请不要使用插件

我想做的是修改下面的代码,允许[b]、[I]和[code](小写和大写条目)吐出html等价物,以便我的注释在注释时可以使用标准的bbcodes,这与当前函数的工作原理非常相似:

function embed_images($content) {
    $content = preg_replace('/\[img=?\]*(.*?)(\[\/img)?\]/ei', '"<img src=\"$1\" alt=\"" . basename("$1") . "\" />"', $content);
    return $content;
}

add_filter('comment_text', 'embed_images');
函数嵌入图像($content){
$content=preg\u replace('/\[img=?\]*(.*)(\[\/img)?\]/ei',''''''',$content);
返回$content;
}
添加过滤器(“注释文本”、“嵌入图像”);
我试了又试,但还是没能成功。任何编码帮助都将不胜感激。谢谢各位

编辑:好了,伙计们,开始工作了。这个看起来还好吗?我的意思是它可以工作,但是代码是如何工作的。。。像样的

function embed_bold($content) {
    $content = preg_replace('/\[b]*(.*?)(\[\/b)?\]/ei', '"<strong>$1</strong>"', $content);
    return $content;
}

add_filter('comment_text', 'embed_bold');
函数嵌入\u粗体($content){
$content=preg\u replace('/\[b]*(.*)(\[\/b)?\]/ei',“$1”,$content);
返回$content;
}
添加过滤器(“注释文本”、“嵌入粗体”);

我曾经写过一篇关于在bbcodes中使用regex的博客文章。不过,大多数人建议使用专门为BBCodes构建的PHP扩展。以下是文章:

取代

'<strong>$1</strong>'
$1
好的,dqhendricks,根据您的编码约定,我将所有bbcodes合并到一个函数中。有没有严重的编码违规,或者看起来不错

//add bbcode tags
function embed_bbcode($content) {
    $content = preg_replace('/\[img](.+?)\[\/img]/ei', '"<img src=\"$1\" alt=\"" . basename("$1") . "\" />"', $content);
    $content = preg_replace('/\[b](.+?)\[\/b]/ei', '"<strong>$1</strong>"', $content);
    $content = preg_replace('/\[i](.+?)\[\/i]/ei', '"<em>$1</em>"', $content);
    $content = preg_replace('/\[code](.+?)\[\/code]/ei', '"<code>$1</code>"', $content);
    $content = preg_replace('/\[quote](.+?)\[\/quote]/ei', '"<blockquote>$1</blockquote>"', $content);
    return $content;
}

add_filter('comment_text', 'embed_bbcode');

再次感谢您的帮助。

我以前见过类似的东西,但如何在WordPress中实现它?@Lokheed只需在示例代码中找到的preg_replace()中添加所需的表达式和重新编译,我想我已经成功了。和你的不一样,但很有效。你觉得代码怎么样?是体面,还是讨厌?谢谢你的回答。我从另一篇与此无关的帖子中知道,“ie”增加了案件不敏感,我需要这样做。有些人可能会放[B],而另一些人可能会放[B]。但是我试着使用“/[b](.+?)[\/b]/”但它不起作用。再说一次,我不是一个程序员,但我很确定WordPress需要额外的东西。再次感谢您的帮助。@Lokheed“e”修饰符使您的preg_replace对替换文本进行评估,就像它是代码一样。这是非常危险的,尤其是与用户提交的内容混合在一起。不要使用“e”。您所需要做的就是从替换字符串中去掉双引号。请参阅以上对新替换字符串的编辑。您尝试了哪些不起作用的内容?
//add bbcode tags
function embed_bbcode($content) {
    $content = preg_replace('/\[img](.+?)\[\/img]/ei', '"<img src=\"$1\" alt=\"" . basename("$1") . "\" />"', $content);
    $content = preg_replace('/\[b](.+?)\[\/b]/ei', '"<strong>$1</strong>"', $content);
    $content = preg_replace('/\[i](.+?)\[\/i]/ei', '"<em>$1</em>"', $content);
    $content = preg_replace('/\[code](.+?)\[\/code]/ei', '"<code>$1</code>"', $content);
    $content = preg_replace('/\[quote](.+?)\[\/quote]/ei', '"<blockquote>$1</blockquote>"', $content);
    return $content;
}

add_filter('comment_text', 'embed_bbcode');