我仍然面临一个重大问题,这在之前的问题中不幸没有回答。我想做以下事情:
我有一个定制的cms,在那里我想使用短代码来使用插件。它是这样工作的:
this is a text
[plugin-blog]
this is more text
and some more
[plugin-contact]
输出如下:
this is a text
include_once('plugins/blog/blog.php'); <- loads specific file for plugin
this is more text
and some more
include_once('plugins/contact/contact.php'); <- loads specific file for plugin
这是工作很好,但我想要的是从插件有一个特定的id,我想用[plugin-blog 2]
调用。我需要存储插件的数量,并在插件的php文件中使用它,如SELECT * FROM 'plugin_db' WHERE 'id' = $value_from_shortcode
我该怎么做?我完全不知道如何处理这个问题。我尝试了所有的东西,但要么循环不再工作,要么数字没有保存在插件名称的组合中。我有以下代码:
$regex = '~'[plugin-([^]]+)]~';
$content_one = htmlspecialchars_decode($page['content_one']);
$parts = preg_split($regex, $content_one, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach($parts as $k => $v){
if($k & 1)
include_once('plugins/'.$v.'/'.$v.'.php');
else
echo htmlspecialchars_decode($v);
}
可以使用以下命令检索id和名称:
foreach($parts as $k => $v){
if($k & 1) {
$id = preg_replace('/'D+/', '', $v);
$v = preg_replace('/'d+/', '', $v);
echo "id = $id'n";
include ('plugins/'.$v.'/'.$v.'.php');
} else {
echo htmlspecialchars_decode($v);
}
}
注意:保留测试$k & 1
来处理所有插件
父作用域的变量应该在包含的文件中作为全局变量可用:
给定:下面是test.php
<?php
$foo = "test";
include('./b.php');
这是b.p php:
<?php echo $foo;
运行test.php
将输出test
在你的例子中,$k
和$v
将在你包含的文件中可用,所以你可以这样做:
if (1 == $k) {
$id = $v;
include_once('plugins/'.$v.'/'.$v.'.php');
}
请考虑学习PHP和最佳实践