Типы постов не найдены.
';
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 'Ключ (Name) | ';
echo 'Тип | ';
echo 'Настройки | ';
echo '
';
echo '';
acf_viewer_display_fields($fields, 0);
echo '
';
} 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 '';
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 'Ключ (Name) | ';
echo 'Тип | ';
echo 'Настройки | ';
echo '
';
echo '';
acf_viewer_display_fields($fields, 0);
echo '
';
} else {
echo '
Поля не найдены в этой группе.
';
}
echo '
';
}
}
echo '
';
}
}
// Функция для отображения Options Pages
function acf_viewer_show_options_pages() {
// Проверяем, есть ли функция acf_get_options_pages
if (!function_exists('acf_get_options_pages')) {
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 'Ключ (Name) | ';
echo 'Тип | ';
echo 'Настройки | ';
echo '
';
echo '';
acf_viewer_display_fields($fields, 0);
echo '
';
}
echo '
';
}
}
echo '
';
}
}