向php数组迭代添加子快捷码

时间:2012-11-06 作者:Luca

我有一个短代码结构:

[component]
   [type1]some content[/type1]
   [type2]some more content[/type2]
   ...
   [typeN]some other content[/typeN]
[/component]
我想要$content 存储在数组中的子短码的。我现在所做的是,在他们的作用下,我通过了$content 创建一个全局变量,然后用它们创建一个数组,但这不是很优雅。

此外,我不能将它们作为主快捷码标记的属性,因为:

[component type1="some content" type2="some more content"]
由于我需要在新行中添加属性以提高可读性,因此我在这里试图解决这一问题:wpautop() when shortcode attributes are on new lines break args array

编辑-我不是在寻找类似列表的结构,而是将这些值放在键值数组中以填充复杂的标记,并在javascript函数中将该数组用作JSON对象。

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您的数据结构看起来非常像列表。你遇到困难的原因是因为你试图修复一个修复,这从来都不是一件好事。相反,我建议你寻找其他解决问题的方法。

例如,相反,使用以下内容更符合逻辑:

<ul class="component">
    <li>content 1</li>
    <li>content 2</li>
</ul>
使用这种结构,您可以实现JQuery手风琴、选项卡、内容块等所有内容

.component {
    margin:0;
    padding:0;
    list-style:none;
}
.component > li {
    /* style each list element here
}
或者使用ol-even。然后coupling this with editor styles to mark it out as different 从普通无序列表中。

要进一步区分它,请使用TinyMCE的额外按钮。

function add_component_button() {
   if ( ! current_user_can(\'edit_posts\') && ! current_user_can(\'edit_pages\') )
     return;
   if ( get_user_option(\'rich_editing\') == \'true\') {
     add_filter(\'mce_external_plugins\', \'add_component_tinymce_plugin\');
     add_filter(\'mce_buttons\', \'register_component_button\');
   }
}

function register_component_button($buttons) {
   array_push($buttons, "|", "componentlist");
   return $buttons;
}

function add_component_tinymce_plugin($plugin_array) {
   $plugin_array[\'componentlist\'] = get_bloginfo(\'template_url\').\'/custom/editor_plugin.js\';
   return $plugin_array;
}

add_action(\'init\', \'add_component_button\');

function my_refresh_mce($ver) {
  $ver += 3;
  return $ver;
}

add_filter( \'tiny_mce_version\', \'my_refresh_mce\');
这里是editor\\u插件。js公司:

(function() {
    tinymce.create(\'tinymce.plugins.componentul\', {
        init : function(ed, url) {
            ed.addButton(\'componentul\', {
                title : \'componentul\',
                image : url+\'/component.png\',
                onclick : function() {
                    ed.execCommand(\'mceInsertContent\', false, \'<ul class="component"><li>Start typing here</li></ul>\');
                }
            });
        },
        createControl : function(n, cm) {
            return null;
        },
        getInfo : function() {
            return {
                longname : "Component UL",
                author : \'Tom J Nowell\',
                authorurl : \'http://tomjn.com/\',
                infourl : \'http://tomjn.com/\',
                version : "1.0"
            };
        }
    });
    tinymce.PluginManager.add(\'componentul\', tinymce.plugins.componentul);
})();

结束

相关推荐

Custom field to array?

我有一个posts查询,它按ID查询posts,但希望通过插入自定义字段来选择这些posts。这是查询,我想将自定义字段放在哪里:$query_args = array(\'post_type\'=>\'post\', \'post_status\'=>\'publish\', \'include\' => \'483,454, CUSTOM FIELD HERE\', \'orderby\' => \'date\', \'order\' => \'ASC\');