Intereting Posts
Гравитационные формы Якорь только на передней странице? Установка WordPress Включить ли все файлы в дочерней теме родителя? Группа / Сортировка / Этикетка "Страницы" Существуют ли отдельные распределения памяти для разных пользовательских ролей в WordPress? Получить эскиз URL :) Показывать один элемент для каждой категории настраиваемого типа сообщений. Показать все сообщения из выбранного архивного месяца Как вы можете добавить ссылку на описание боковой панели? Есть ли опция или константа wp-config.php, которую я могу настроить, чтобы позволить мне загружать ночные / бета-сборки? Консоль недоступна Вход таксономии запроса WP отличается от вывода? wp_remote_get не работает с безопасными подключениями https? Отображение категорий и подкатегорий с сообщениями Резервное копирование восстанавливает возврат каретки к литеральным строкам

Итеративно добавьте вспомогательные короткие коды в php-массив

У меня есть эта структура короткого кода:

[component] [type1]some content[/type1] [type2]some more content[/type2] ... [typeN]some other content[/typeN] [/component] 

Я хотел бы иметь $content дополнительных коротких кодов, хранящихся в массиве. То, что я делаю в данный момент, заключается в том, что в их функции я передаю $content глобальной переменной, а затем создаю массив из них, но он не очень изящный.

Кроме того, я не могу использовать их в качестве атрибутов основного тега shortcode следующим образом:

 [component type1="some content" type2="some more content"] 

поскольку мне нужно иметь атрибуты на новых строках для удобочитаемости – что-то, к чему я пытаюсь обратиться здесь: wpautop (), когда атрибуты короткого кода находятся на новых строках break args array

EDIT – я не ищу структуру, похожую на список, но чтобы эти значения в массиве значений ключа заполнили сложную разметку, а также использовать массив как объект JSON в моих функциях javascript.

Кажется, что ваша структура данных очень похожа на список. Причина, по которой вы сталкиваетесь с трудностями, состоит в том, что вы пытаетесь исправить исправление, которое никогда не бывает хорошим. Вместо этого я предлагаю вам искать альтернативные решения вашей проблемы.

Например, вместо этого было бы логичнее использовать что-то вроде:

 <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 даже. Затем свяжите это с стилями редактора, чтобы отметить это как отличное от обычного неупорядоченного списка.

Чтобы дополнительно отличить его, используйте дополнительную кнопку с помощью 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'); 

Вот редактор_plugin.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); })();