Skill – WordPress

Skopiuj poniższy kod do pliku SKILL.md w swoim projekcie WordPress.

Pobierz skill

# Pobierz bezpośrednio
curl -o SKILL.md https://raw.githubusercontent.com/tomaszgiemza/claude-skills/main/skills/wordpress/SKILL.md

Treść pliku SKILL.md

---
name: wordpress
description: "Tworzenie i modyfikacja kodu WordPress  wtyczki, motywy, functions.php, hooks, shortcodes"
---

# WordPress Development Skill

## Stack
- WordPress 6.x
- PHP 8.1+
- MySQL 8.0
- Gutenberg Block Editor

## Zasady kodowania

### PHP
- Używaj PSR-12 + WordPress Coding Standards
- Zawsze sanityzuj input: `sanitize_text_field()`, `absint()`, `wp_kses_post()`
- Zawsze escapuj output: `esc_html()`, `esc_attr()`, `esc_url()`
- Używaj nonces dla formularzy: `wp_nonce_field()` / `wp_verify_nonce()`
- Prefixuj wszystkie funkcje, klasy i hooki: `prefix_function_name()`

### Hooki (Actions & Filters)
```php
// DOBRY pattern
add_action('init', 'prefix_init_function');
function prefix_init_function() {
    // kod
}

// Usuwanie hooków
remove_action('wp_head', 'wp_generator');
```

### Zapytania do bazy danych
```php
// ZAWSZE używaj $wpdb->prepare() dla własnych zapytań
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->posts} WHERE post_author = %d",
        $user_id
    )
);

// Dla standardowych zapytań używaj WP_Query
$query = new WP_Query([
    'post_type' => 'post',
    'posts_per_page' => 10,
    'meta_key' => '_featured',
    'meta_value' => '1',
]);
```

### Enqueue scripts/styles
```php
// ZAWSZE używaj wp_enqueue_scripts, nigdy <script> w template
add_action('wp_enqueue_scripts', 'prefix_enqueue_assets');
function prefix_enqueue_assets() {
    wp_enqueue_style(
        'prefix-style',
        get_stylesheet_uri(),
        [],
        wp_get_theme()->get('Version')
    );
    
    wp_enqueue_script(
        'prefix-script',
        get_template_directory_uri() . '/js/main.js',
        ['jquery'],
        '1.0.0',
        true // w stopce
    );
}
```

## Struktura wtyczki
```
my-plugin/
├── my-plugin.php          ← główny plik z headerem
├── includes/
│   ├── class-main.php     ← główna klasa
│   ├── class-admin.php    ← panel admina
│   └── class-frontend.php ← frontend
├── admin/
│   ├── css/
│   └── js/
├── public/
│   ├── css/
│   └── js/
└── README.md
```

## Bezpieczeństwo – checklist
- [ ] Sanityzacja wszystkich inputów
- [ ] Escapowanie wszystkich outputów
- [ ] Nonces dla formularzy i AJAX
- [ ] Sprawdzanie uprawnień: `current_user_can()`
- [ ] Ochrona bezpośredniego dostępu: `if (!defined('ABSPATH')) exit;`
- [ ] Przygotowane zapytania SQL