add utils

This commit is contained in:
Profile Profile
2026-01-25 21:15:07 +03:00
parent ddf44fbfad
commit d99f75aed7

105
utils/acf-category.php Normal file
View File

@@ -0,0 +1,105 @@
<?php
// Добавляем отдельный пункт в главное меню админки
add_action('admin_menu', 'show_category_acf_fields_menu_separate');
function show_category_acf_fields_menu_separate() {
add_menu_page(
'ACF поля категорий', // Заголовок страницы
'ACF категорий', // Название в меню
'manage_options', // Права доступа
'show-category-acf-fields', // Слаг страницы
'show_category_acf_fields_page', // Функция отображения
'dashicons-category', // Иконка
30 // Позиция в меню
);
}
function show_category_acf_fields_page() {
// Проверяем права
if (!current_user_can('manage_options')) {
wp_die('Недостаточно прав для доступа к этой странице.');
}
?>
<div class="wrap">
<h1>ACF поля всех категорий</h1>
<?php
// Получаем все категории
$categories = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC'
));
if (is_wp_error($categories)) {
echo '<p>Ошибка при получении категорий: ' . $categories->get_error_message() . '</p>';
return;
}
// Проверяем, есть ли категории
if (empty($categories)) {
echo '<p>Категории не найдены.</p>';
return;
}
foreach ($categories as $category) {
echo '<div style="background: #fff; padding: 20px; margin: 20px 0; border: 1px solid #ccd0d4; border-radius: 4px;">';
echo '<h2>' . esc_html($category->name) . ' (ID: ' . $category->term_id . ')</h2>';
echo '<p><strong>Slug:</strong> ' . esc_html($category->slug) . '</p>';
echo '<p><strong>Описание:</strong> ' . esc_html($category->description) . '</p>';
// Получаем все ACF поля для категории
// Важно: указываем правильный параметр для таксономии
$fields = get_field_objects('category_' . $category->term_id);
if ($fields) {
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr><th width="20%">Название поля</th><th width="15%">Ключ (Key)</th><th width="10%">Тип</th><th width="55%">Значение</th></tr></thead>';
echo '<tbody>';
foreach ($fields as $field_name => $field) {
echo '<tr>';
echo '<td>' . esc_html($field['label']) . '</td>';
echo '<td><code>' . esc_html($field['name']) . '</code></td>';
echo '<td>' . esc_html($field['type']) . '</td>';
// Форматируем вывод значения
echo '<td>';
if ($field['value'] === null || $field['value'] === false || $field['value'] === '') {
echo '<em style="color: #999;">(пусто)</em>';
} elseif (is_array($field['value'])) {
echo '<pre style="max-height: 200px; overflow: auto; background: #f6f7f7; padding: 10px; margin: 0;">' . esc_html(print_r($field['value'], true)) . '</pre>';
} elseif (is_object($field['value'])) {
echo '<pre style="max-height: 200px; overflow: auto; background: #f6f7f7; padding: 10px; margin: 0;">' . esc_html(print_r($field['value'], true)) . '</pre>';
} else {
echo esc_html($field['value']);
}
echo '</td>';
echo '</tr>';
}
echo '</tbody></table>';
} else {
echo '<div class="notice notice-info inline"><p>ACF поля не найдены для этой категории.</p></div>';
}
echo '</div>';
}
?>
<style>
.wrap h2 {
color: #1d2327;
margin-bottom: 10px;
}
pre {
font-size: 12px;
line-height: 1.4;
}
</style>
</div>
<?php
}