<?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