<?php
/*
Plugin Name: Subdomain Redirector
Plugin URI: https://example.com
Description: Yazı, sayfa ve kategorileri subdomaine yönlendiren eklenti. Belirli yazıları ve kategorileri hariç tutma özelliği içerir.
Version: 1.3
Author: Your Name
Author URI: https://example.com
*/

// Yönetim menüsü ekle
function subdomain_redirector_add_admin_menu() {
    add_menu_page(
        'Subdomain Ayarları',
        'Subdomain Ayarları',
        'manage_options',
        'subdomain_redirector',
        'subdomain_redirector_settings_page',
        'dashicons-networking',
        100
    );
}
add_action('admin_menu', 'subdomain_redirector_add_admin_menu');

// Yönetim sayfası içeriği
function subdomain_redirector_settings_page() {
    ?>
    <div class="wrap">
        <h1>Subdomain Ayarları</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('subdomain_redirector_settings');
            do_settings_sections('subdomain_redirector');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

// Ayarları kaydetme ve kayıt alanı oluşturma
function subdomain_redirector_settings_init() {
    // Ana domain ayarı
    register_setting('subdomain_redirector_settings', 'subdomain_redirector_base_domain');

    // Hariç tutulacak yazılar/sayfalar ayarı
    register_setting('subdomain_redirector_settings', 'subdomain_redirector_exclude_ids');

    // Hariç tutulacak kategoriler ayarı
    register_setting('subdomain_redirector_settings', 'subdomain_redirector_exclude_categories');

    add_settings_section(
        'subdomain_redirector_section',
        'Genel Ayarlar',
        'subdomain_redirector_section_callback',
        'subdomain_redirector'
    );

    add_settings_field(
        'subdomain_redirector_base_domain',
        'Ana Domain',
        'subdomain_redirector_base_domain_render',
        'subdomain_redirector',
        'subdomain_redirector_section'
    );

    add_settings_field(
        'subdomain_redirector_exclude_ids',
        'Hariç Tutulacak Yazılar/Sayfalar',
        'subdomain_redirector_exclude_ids_render',
        'subdomain_redirector',
        'subdomain_redirector_section'
    );

    add_settings_field(
        'subdomain_redirector_exclude_categories',
        'Hariç Tutulacak Kategoriler',
        'subdomain_redirector_exclude_categories_render',
        'subdomain_redirector',
        'subdomain_redirector_section'
    );
}
add_action('admin_init', 'subdomain_redirector_settings_init');

// Alan açıklaması
function subdomain_redirector_section_callback() {
    echo '<p>Alt alan adı yönlendirmesi için genel ayarları buradan düzenleyebilirsiniz.</p>';
}

// Ana domain giriş alanı
function subdomain_redirector_base_domain_render() {
    $option = get_option('subdomain_redirector_base_domain', parse_url(home_url(), PHP_URL_HOST));
    ?>
    <input type="text" name="subdomain_redirector_base_domain" value="<?php echo esc_attr($option); ?>" class="regular-text">
    <?php
}

// Hariç tutulacak yazılar/sayfalar giriş alanı
function subdomain_redirector_exclude_ids_render() {
    $option = get_option('subdomain_redirector_exclude_ids', '');
    ?>
    <textarea name="subdomain_redirector_exclude_ids" rows="5" cols="50" class="large-text"><?php echo esc_textarea($option); ?></textarea>
    <p class="description">Yönlendirme dışı bırakılacak yazı/sayfa ID'lerini virgülle ayırarak girin (ör: 1,2,45).</p>
    <?php
}

// Hariç tutulacak kategoriler giriş alanı
function subdomain_redirector_exclude_categories_render() {
    $option = get_option('subdomain_redirector_exclude_categories', '');
    ?>
    <textarea name="subdomain_redirector_exclude_categories" rows="5" cols="50" class="large-text"><?php echo esc_textarea($option); ?></textarea>
    <p class="description">Yönlendirme dışı bırakılacak kategori ID'lerini virgülle ayırarak girin (ör: 3,7).</p>
    <?php
}

// Alt alan adı yönlendirme işlevi
function subdomain_redirector_init() {
    if (is_singular(['post', 'page'])) {
        global $post;

        // Hariç tutulacak yazılar/sayfalar
        $exclude_ids = get_option('subdomain_redirector_exclude_ids', '');
        $exclude_ids_array = array_map('trim', explode(',', $exclude_ids));

        // Eğer yazı/sayfa hariç tutulmuşsa yönlendirme yapma
        if (in_array($post->ID, $exclude_ids_array)) {
            return;
        }

        // Hariç tutulacak kategoriler
        $exclude_categories = get_option('subdomain_redirector_exclude_categories', '');
        $exclude_categories_array = array_map('trim', explode(',', $exclude_categories));

        // Eğer yazı hariç tutulan bir kategoriye aitse yönlendirme yapma
        $post_categories = wp_get_post_categories($post->ID);
        if (array_intersect($post_categories, $exclude_categories_array)) {
            return;
        }

        // Alt alan adı yönlendirmesi
        $post_slug = $post->post_name;
        $base_domain = get_option('subdomain_redirector_base_domain', parse_url(home_url(), PHP_URL_HOST));
        $subdomain_url = "https://{$post_slug}." . $base_domain;

        if (!is_preview() && !is_admin()) {
            wp_redirect($subdomain_url, 301);
            exit;
        }
    }
}
add_action('template_redirect', 'subdomain_redirector_init');
Kodu dene fikir olsun diye paylaştım kesinlikle sitende deneme ilkönce localde dene