105 lines
4.6 KiB
PHP
105 lines
4.6 KiB
PHP
<?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
|
|
}
|