t00rt
@t00rt

Как зарегистрировать таксономии «пачкой» из массива?

Есть массив массивов с данными необходимыми для регистрации таксономий, слаги, имена и т.д.
Как из этого массива, пробегая циклом, зарегистрировать все таксономии?

Проблема в том что нельзя переобъявить функцию, как сделать название функции динамическим так и не придумал, пробовал всякие ссылки на переменные и анонимные функции, что то не получилось.

foreach ($tax_mas as $tax) {
		add_action('init', 'create_taxonomy');
		function create_taxonomy() {
			register_taxonomy($tax['tax_slug'], array('products'), array(
				'labels'                => array(
					'name'              => $tax['tax_name'],
					'singular_name'     => $tax['tax_name'],
					'search_items'      => 'Найти атрибут',
					'all_items'         => 'Все атрибуты',
					'view_item'         => 'Посмотреть атрибуты',
					'parent_item'       => 'Родительская группа',
					'parent_item_colon' => 'Родительская группа:',
					'edit_item'         => 'Редактировать атрибут',
					'update_item'       => 'Обновить атрибут',
					'add_new_item'      => 'Добавить новый атрибут',
					'new_item_name'     => 'Добавить новый атрибут',
					'menu_name'         => $tax['tax_name'],
					'relations'         => array('term'=>$tax['relation_term_slug'], 'term_tax'=>$tax['relation_term_taxslug'])
				),
				'description'           => $tax['tax_description'], // описание таксономии
				'public'                => true,
				'publicly_queryable'    => true, // равен аргументу public
				'show_ui'               => true, // равен аргументу public
				'show_in_menu'          => false, // равен аргументу public
				'show_in_nav_menus'     => $tax['tax_show_menu'], // равен аргументу public
				'show_tagcloud'         => true, // равен аргументу show_ui
				'show_in_rest'          => true, // добавить в REST API
				'rest_base'             => true, // $taxonomy
				'hierarchical'          => true,
				'update_count_callback' => '',
				'query_var'             => true, // название параметра запроса
				'rewrite'               => array('hierarchical' => true),
				'capabilities'          => array(),
				'meta_box_cb'           => post_categories_meta_box, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
				'show_admin_column'     => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
				'_builtin'              => false,
				'show_in_quick_edit'    => true, // по умолчанию значение show_ui
			));
		}
	}
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
MedVedar
@MedVedar
e-commerce developer
add_action('init', 'create_taxonomy');
function create_taxonomy() {
  foreach ($tax_mas as $tax) {
    register_taxonomy($tax['tax_slug'], array('products'), array(
      ...
    ));
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы