<?php
/**
* Plugin Name: Kategorien Grid Übersicht
* Description: Zeigt WooCommerce-Kategorien in einem modernen Grid im Backend mit Bildfeldern.
* Version: 1.0
* Author: Florian
*/
if (!defined(‚ABSPATH‘)) exit;
// — ADMIN MENÜ —
add_action(‚admin_menu‘, function () {
add_menu_page(
‚Kategorien Übersicht‘,
‚Kategorie Übersicht‘,
‚manage_options‘,
‚kategorien-uebersicht‘,
‚kg_render_admin_page‘,
‚dashicons-grid-view‘,
26
);
});
// — ADMIN SEITE RENDERN —
function kg_render_admin_page() {
// Kategorien laden
$categories = get_terms([
‚taxonomy‘ => ‚product_cat‘,
‚hide_empty‘ => false,
]);
echo ‚<div class=“wrap“><h1>Kategorien Übersicht</h1>‘;
echo ‚<style>
.kg-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 20px;
margin-top: 30px;
}
.kg-card {
border: 1px solid #ddd;
padding: 15px;
border-radius: 10px;
background: #fff;
text-align: center;
box-shadow: 0 0 8px rgba(0,0,0,0.05);
}
.kg-card img {
width: 100%;
height: 140px;
object-fit: cover;
border-radius: 8px;
margin-bottom: 10px;
background: #f8f8f8;
}
.kg-save-btn {
margin-top: 10px;
}
</style>‘;
echo ‚<form method=“post“ enctype=“multipart/form-data“>‘;
echo ‚<div class=“kg-grid“>‘;
foreach ($categories as $cat) {
// Custom Bild holen
$custom_img_id = get_term_meta($cat->term_id, ‚custom_category_image‘, true);
$img_url = $custom_img_id ? wp_get_attachment_url($custom_img_id) : “;
echo ‚<div class=“kg-card“>‘;
echo ‚<h3>‘ . esc_html($cat->name) . ‚</h3>‘;
if ($img_url) {
echo ‚<img src=“‚ . esc_url($img_url) . ‚“>‘;
} else {
echo ‚<img src=“https://via.placeholder.com/300×140?text=Kein+Bild“>‘;
}
echo ‚<p><input type=“file“ name=“cat_img_‘ . $cat->term_id . ‚“></p>‘;
echo ‚</div>‘;
}
echo ‚</div>‘; // Grid
echo ‚<input type=“submit“ class=“button button-primary kg-save-btn“ name=“kg_save“ value=“Speichern“>‘;
echo ‚</form></div>‘;
kg_handle_save($categories);
}
// — SPEICHERN —
function kg_handle_save($categories)
{
if (!isset($_POST[‚kg_save‘])) return;
foreach ($categories as $cat) {
$input_name = ‚cat_img_‘ . $cat->term_id;
if (!empty($_FILES[$input_name][’name‘])) {
// Bild hochladen
require_once(ABSPATH . ‚wp-admin/includes/file.php‘);
$upload = wp_handle_upload($_FILES[$input_name], [‚test_form‘ => false]);
if (!isset($upload[‚error‘])) {
$wp_filetype = $upload[‚type‘];
$filename = $upload[‚file‘];
$attachment = [
‚post_mime_type‘ => $wp_filetype,
‚post_title‘ => sanitize_file_name($filename),
‚post_content‘ => “,
‚post_status‘ => ‚inherit‘
];
$attach_id = wp_insert_attachment($attachment, $filename);
require_once(ABSPATH . ‚wp-admin/includes/image.php‘);
$attach_data = wp_generate_attachment_metadata($attach_id, $filename);
wp_update_attachment_metadata($attach_id, $attach_data);
update_term_meta($cat->term_id, ‚custom_category_image‘, $attach_id);
}
}
}
echo ‚<div class=“updated“><p>Bilder gespeichert!</p></div>‘;
}
Lagertechnik konfigurieren
Gabelstapler konfigurieren
Hubarbeitsbühnen konfigurieren