add utils
This commit is contained in:
105
utils/acf-category.php
Normal file
105
utils/acf-category.php
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user