ACF Fields Viewer

Типы постов не найдены.

'; return; } foreach ($all_post_types as $post_type_slug => $post_type) { // Пропускаем служебные типы if (in_array($post_type_slug, array('revision', 'nav_menu_item', 'custom_css', 'customize_changeset', 'oembed_cache', 'user_request', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation', 'acf-field-group', 'acf-field'))) { continue; } echo '
'; echo '

' . esc_html($post_type->labels->name) . ' (' . esc_html($post_type_slug) . ')

'; // Информация о типе поста echo '
'; echo '
Slug: ' . esc_html($post_type_slug) . '
'; echo '
Публичный: ' . ($post_type->public ? 'Да' : 'Нет') . '
'; echo '
Иерархический: ' . ($post_type->hierarchical ? 'Да' : 'Нет') . '
'; // Подсчет постов $count = wp_count_posts($post_type_slug); $total = 0; foreach ($count as $status => $number) { $total += $number; } echo '
Всего постов: ' . $total . '
'; echo '
'; // Получаем группы полей для этого типа постов $field_groups = acf_get_field_groups(array( 'post_type' => $post_type_slug )); if (empty($field_groups)) { echo '

ACF группы полей не найдены для этого типа постов.

'; } else { echo '

Найдено групп полей: ' . count($field_groups) . '

'; foreach ($field_groups as $field_group) { echo '
'; echo '

' . esc_html($field_group['title']) . '

'; // Информация о группе echo '
'; echo '
Key: ' . esc_html($field_group['key']) . '
'; // Показываем правила размещения if (!empty($field_group['location'])) { echo '
'; echo 'Правила размещения:
'; foreach ($field_group['location'] as $group_index => $rules) { if ($group_index > 0) echo 'или
'; foreach ($rules as $rule_index => $rule) { if ($rule_index > 0) echo 'и '; $operator_text = ($rule['operator'] == '==') ? 'равно' : 'не равно'; echo esc_html($rule['param']) . ' ' . $operator_text . ' ' . esc_html($rule['value']) . '
'; } } echo '
'; } if (!empty($field_group['description'])) { echo '
Описание: ' . esc_html($field_group['description']) . '
'; } echo '
'; // Получаем поля группы $fields = acf_get_fields($field_group['key']); if ($fields) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; acf_viewer_display_fields($fields, 0); echo '
Название поляКлюч (Name)ТипНастройки
'; } else { echo '

Поля не найдены в этой группе.

'; } echo '
'; } } echo '
'; } } // Рекурсивная функция для отображения полей (включая вложенные) function acf_viewer_display_fields($fields, $level = 0) { foreach ($fields as $field) { $indent = str_repeat('—', $level); echo ''; echo ''; echo $indent . ' ' . esc_html($field['label']) . ''; if (!empty($field['required'])) { echo 'обязательное'; } echo ''; echo '' . esc_html($field['name']) . ''; echo '' . esc_html($field['type']) . ''; echo ''; // Показываем ключевые настройки в зависимости от типа $settings = array(); if (!empty($field['instructions'])) { $settings[] = 'Инструкции: ' . esc_html($field['instructions']); } if (!empty($field['default_value'])) { $settings[] = 'По умолчанию: ' . esc_html($field['default_value']); } // Специфичные настройки для разных типов switch ($field['type']) { case 'text': case 'textarea': if (!empty($field['placeholder'])) { $settings[] = 'Placeholder: ' . esc_html($field['placeholder']); } if (!empty($field['maxlength'])) { $settings[] = 'Макс. длина: ' . esc_html($field['maxlength']); } break; case 'select': case 'checkbox': case 'radio': if (!empty($field['choices'])) { $choices = is_array($field['choices']) ? implode(', ', array_keys($field['choices'])) : $field['choices']; $settings[] = 'Варианты: ' . esc_html($choices); } break; case 'image': case 'file': if (!empty($field['return_format'])) { $settings[] = 'Формат возврата: ' . esc_html($field['return_format']); } if (!empty($field['mime_types'])) { $settings[] = 'Типы файлов: ' . esc_html($field['mime_types']); } break; case 'post_object': case 'relationship': if (!empty($field['post_type'])) { $pt = is_array($field['post_type']) ? implode(', ', $field['post_type']) : $field['post_type']; $settings[] = 'Типы постов: ' . esc_html($pt); } break; case 'taxonomy': if (!empty($field['taxonomy'])) { $settings[] = 'Таксономия: ' . esc_html($field['taxonomy']); } break; } if (!empty($settings)) { echo implode('
', $settings); } else { echo ''; } echo ''; echo ''; // Рекурсивно обрабатываем вложенные поля (для repeater, group, flexible content) if (in_array($field['type'], array('repeater', 'group', 'flexible_content')) && !empty($field['sub_fields'])) { acf_viewer_display_fields($field['sub_fields'], $level + 1); } } } // Функция для отображения таксономий function acf_viewer_show_taxonomies() { // Получаем все таксономии $taxonomies = get_taxonomies(array(), 'objects'); if (empty($taxonomies)) { echo '

Таксономии не найдены.

'; return; } foreach ($taxonomies as $taxonomy_slug => $taxonomy) { // Пропускаем служебные таксономии if (in_array($taxonomy_slug, array('nav_menu', 'link_category', 'post_format', 'wp_theme', 'wp_template_part_area'))) { continue; } echo '
'; echo '

' . esc_html($taxonomy->labels->name) . ' (' . esc_html($taxonomy_slug) . ')

'; // Информация о таксономии echo '
'; echo '
Slug: ' . esc_html($taxonomy_slug) . '
'; echo '
Публичная: ' . ($taxonomy->public ? 'Да' : 'Нет') . '
'; echo '
Иерархическая: ' . ($taxonomy->hierarchical ? 'Да' : 'Нет') . '
'; echo '
Типы постов: ' . implode(', ', $taxonomy->object_type) . '
'; // Подсчет терминов $terms_count = wp_count_terms(array('taxonomy' => $taxonomy_slug, 'hide_empty' => false)); echo '
Всего терминов: ' . (is_wp_error($terms_count) ? 0 : $terms_count) . '
'; echo '
'; // Получаем группы полей для этой таксономии $field_groups = acf_get_field_groups(array( 'taxonomy' => $taxonomy_slug )); if (empty($field_groups)) { echo '

ACF группы полей не найдены для этой таксономии.

'; } else { echo '

Найдено групп полей: ' . count($field_groups) . '

'; foreach ($field_groups as $field_group) { echo '
'; echo '

' . esc_html($field_group['title']) . '

'; echo '
'; echo '
Key: ' . esc_html($field_group['key']) . '
'; if (!empty($field_group['description'])) { echo '
Описание: ' . esc_html($field_group['description']) . '
'; } echo '
'; // Получаем поля группы $fields = acf_get_fields($field_group['key']); if ($fields) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; acf_viewer_display_fields($fields, 0); echo '
Название поляКлюч (Name)ТипНастройки
'; } else { echo '

Поля не найдены в этой группе.

'; } echo '
'; } } echo '
'; } } // Функция для отображения Options Pages function acf_viewer_show_options_pages() { // Проверяем, есть ли функция acf_get_options_pages if (!function_exists('acf_get_options_pages')) { echo '

ACF Options Pages не зарегистрированы или недоступны.

'; return; } $options_pages = acf_get_options_pages(); if (empty($options_pages)) { echo '

ACF Options Pages не найдены.

'; return; } foreach ($options_pages as $options_page) { echo '
'; echo '

' . esc_html($options_page['page_title']) . '

'; echo '
'; echo '
Menu Slug: ' . esc_html($options_page['menu_slug']) . '
'; echo '
Post ID: ' . esc_html($options_page['post_id']) . '
'; echo '
'; // Получаем группы полей для этой options page $field_groups = acf_get_field_groups(array( 'options_page' => $options_page['menu_slug'] )); if (empty($field_groups)) { echo '

ACF группы полей не найдены для этой страницы опций.

'; } else { echo '

Найдено групп полей: ' . count($field_groups) . '

'; foreach ($field_groups as $field_group) { echo '
'; echo '

' . esc_html($field_group['title']) . '

'; $fields = acf_get_fields($field_group['key']); if ($fields) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; acf_viewer_display_fields($fields, 0); echo '
Название поляКлюч (Name)ТипНастройки
'; } echo '
'; } } echo '
'; } }