我想知道如何执行在另一个短代码中 内创建的短代码。我在这个主题上搜索的所有内容都涉及在另一个中嵌入一个短代码,例如:{{}}},这是不我正在谈论的内容。
我的代码:
[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]
只有在插件的视图构建工具(然后通过短代码调用)时才会执行。我的问题的一个更好的版本是:有没有办法让我的自定义短代码首先执行,返回这两个短代码,并让包含短代码正常执行这些?