【问题标题】:Shortcode plugins for own custom cms like wordpress shortcode plugins用于自己的自定义 cms 的简码插件,例如 wordpress 简码插件
【发布时间】:2013-11-27 09:04:24
【问题描述】:

我已经为自己创建了一个自定义 CMS 和一个按预期工作的插件系统。

现在我想创建基于简码的插件, 例如: [gallery attr1=100 attr2="string"] 和 [mycode title='message' color='#F00']Hello World![/mycode]

我想在我的 CMS 中处理上述短代码。 函数将用 HTML 替换短代码,并获取和设置属性作为 mySQL 查询或其他东西的参数。

可能正则表达式会有所帮助,我不是正则表达式专家。如果有其他微笑或好方法存在,我不想使用这样的正则表达式。

使用 PHP 和 mySQL 开发的 CMS。

我访问了 wordpress 开发者网站并了解了概念,我已经创建了注册或设置插件、菜单、主题侧边栏等的功能。

我认为这些信息足以说明问题,因为我可以这样解释。

提前谢谢你

【问题讨论】:

  • 这里有问题吗...因为如果有我不知道您在问什么...
  • 例如:在页面内容中有标签([gallery id=1 title=photos])。我需要一种可以找到这种标签并调用该标签名称的函数的方法(函数库(数组(id => 1,标题=>照片)))。它们可能是它之间的任何结束标签和字符串。
  • 你在开玩笑吗?......大声笑......“我需要一种可以找到这种标签并调用函数的方法”......你试过什么?......或者我们应该写你的代码给你?
  • 我希望您创建一个函数,该函数使用正则表达式来查找标签并返回一个包含该标签名称、其属性以及此标签和结束标签之间的内容的数组

标签: php wordpress plugins content-management-system shortcode


【解决方案1】:

这段代码解决了逻辑

function plugin_sortcode($contents) {
    global $SORTCODES, $DATA;

    foreach ($SORTCODES as $name => $fn) {
        $attr = array();
        preg_match_all("/\[" . $name . " (.*?)\]/", $contents, $matches);
        if ($matches[0]) {

            $code = $matches[0][0];
            if (isset($matches[1])) {
                $attrs = $matches[1][0];
                $attrs = explode(" ", $attrs);
                foreach ($attrs as $values) {
                    $attrs1 = explode("=", $values);
                    $attr[$attrs1[0]] = $attrs1[1];
                }
            }

            $data = $fn($attr, $DATA);
            $contents = str_replace($code, $data, $contents);
        }
    }

    return $contents;
}

【讨论】:

猜你喜欢
  • 2013-07-05
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
相关资源
最近更新 更多