使用短代码构造并执行另一个短代码

时间:2018-04-18 21:54:15

标签: php wordpress shortcode

我想知道如何执行在另一个短代码中 内创建的短代码。我在这个主题上搜索的所有内容都涉及在另一个中嵌入一个短代码,例如:{{}}},这是我正在谈论的内容。

我的代码:

[myshortcode][anothershortcode][/myshortcode]

当我执行function cp_edit_shortcode( $atts ) { $a = shortcode_atts( array( 'id' => '', 'label' => '', ), $atts ); if ($a['id'] && $a['label']){ $sc1 = '[' . $a['id'] . ']'; $sc2 = '[editlink label="✎" prefix="frm_cell_' . $a['label'] . '_" fields="' . $a['id'] . '"]'; $output = '<span id="frm_cell_' . $a['label'] . '_[id]">' . $sc1 . '</span> ' . $sc2; return do_shortcode($output); } } add_shortcode( 'cp-edit', 'cp_edit_shortcode' ); 时,会返回[cp-edit id="127" label="tycard"]。这是完美的,除了我希望它执行短代码而不是只显示HTML。当我直接粘贴这些短代码时,它们会正确执行。

另外,我知道[127] [editlink label="✎" prefix="frm_cell_tycard_" fields="127"]似乎不是一个合适的短代码。这实际上发生在显示表单条目的视图中的表单构建插件的上下文中,因此这些短代码实际上是在该插件的短代码的上下文中执行的。我怀疑问题是我没有全面了解短代码的执行顺序。我是否有可能拥有这样的自定义短代码,输出短代码然后在插件的短代码中执行?

编辑:我做了更多测试。我尝试构建另一个短代码,不是依赖于插件的短代码,而且那个有效。 [127][127]只有在插件的视图构建工具(然后通过短代码调用)时才会执行。我的问题的一个更好的版本是:有没有办法让我的自定义短代码首先执行,返回这两个短代码,并让包含短代码正常执行这些?

0 个答案:

没有答案