إليك كود PHP يعمل كشورت كود في وردبريس لإنشاء محول لغات متعددة:

 إليك كود PHP يعمل كشورت كود في وردبريس لإنشاء محول لغات متعددة:

php
// أضف هذا الكود في ملف functions.php الخاص بثيمك
function multilingual_switcher_shortcode($atts) {
    // الإعدادات الافتراضية
    $atts = shortcode_atts(array(
        'languages' => 'en,fr,es,de,ar', // اللغات المتاحة
        'labels' => '', // تسميات مخصصة للغات
        'class' => 'language-switcher' // كلاس CSS
    ), $atts);

    // الحصول على الرابط الحالي
    $current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    
    // الحصول على المسار الحالي
    $path = parse_url($current_url, PHP_URL_PATH);
    
    // تقسيم اللغات إلى مصفوفة
    $languages = explode(',', $atts['languages']);
    
    // تقسيم التسميات إذا وجدت
    $labels = !empty($atts['labels']) ? explode(',', $atts['labels']) : $languages;
    
    // استخراج اللغة الحالية من الرابط
    $current_lang = '';
    $path_parts = explode('/', trim($path, '/'));
    if (!empty($path_parts) && in_array($path_parts[0], $languages)) {
        $current_lang = $path_parts[0];
        array_shift($path_parts); // إزالة اللغة من المسار
    }
    
    $base_path = implode('/', $path_parts);
    $domain = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]";
    
    // بناء HTML للمحول
    $output = '<div class="' . esc_attr($atts['class']) . '">';
    $output .= '<span>اللغة: </span>';
    
    foreach ($languages as $index => $lang) {
        $label = isset($labels[$index]) ? $labels[$index] : strtoupper($lang);
        
        // إذا كانت هذه اللغة الحالية
        if ($lang === $current_lang) {
            $output .= '<span class="current-language">' . esc_html($label) . '</span> ';
        } else {
            // بناء الرابط الجديد
            $new_url = $domain . '/' . $lang . '/' . $base_path;
            $output .= '<a href="' . esc_url($new_url) . '" class="language-link" data-lang="' . esc_attr($lang) . '">' . esc_html($label) . '</a> ';
        }
    }
    
    $output .= '</div>';
    
    return $output;
}
add_shortcode('language_switcher', 'multilingual_switcher_shortcode');

// إضافة CSS أساسي للتنسيق
function add_language_switcher_styles() {
    echo '
    <style>
    .language-switcher {
        margin: 10px 0;
        padding: 10px;
        border: 1px solid #ddd;
        background: #f9f9f9;
    }
    .language-switcher .current-language {
        font-weight: bold;
        color: #333;
    }
    .language-switcher a {
        text-decoration: none;
        color: #0073aa;
        margin: 0 5px;
    }
    .language-switcher a:hover {
        color: #005177;
        text-decoration: underline;
    }
    </style>
    ';
}
add_action('wp_head', 'add_language_switcher_styles');

كيفية الاستخدام:

  1. أضف الكود في ملف functions.php الخاص بثيمك

  2. استخدم الشورت كود في أي مقالة أو صفحة:

text
[language_switcher]

خيارات متقدمة:

يمكنك تخصيص الشورت كود بالمعاملات التالية:

php
// مع اللغات المخصصة
[language_switcher languages="en,fr,es,ar"]

// مع تسميات مخصصة
[language_switcher languages="en,fr,es,ar" labels="English,Français,Español,العربية"]

// مع كلاس CSS مخصص
[language_switcher class="my-language-switcher"]

كود إضافي لمعالجة الحالات الخاصة:

php
// لإضافة redirect تلقائي للغة الافتراضية
function default_language_redirect() {
    // إذا كان الرابط لا يحتوي على لغة في البداية
    $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    $path_parts = explode('/', trim($path, '/'));
    
    $available_langs = ['en', 'fr', 'es', 'de', 'ar'];
    $default_lang = 'en';
    
    if (!empty($path_parts) && !in_array($path_parts[0], $available_langs)) {
        // إعادة التوجيه إلى اللغة الافتراضية
        $new_url = home_url($default_lang . $path);
        wp_redirect($new_url, 301);
        exit;
    }
}
//add_action('template_redirect', 'default_language_redirect'); // افعل هذا إذا أردت

ملاحظات مهمة:

  1. تأكد من أن هيكل الروابط في وردبريس مضبوط على "إسم المقال"

  2. قد تحتاج إلى إضافة قواعد rewrite في ملف .htaccess لدعم الهيكل متعدد اللغات

  3. يمكنك تخصيص التصميم عن طريق تعديل CSS

هذا الكود سيعمل تلقائياً على تحويل الروابط بين اللغات مع الحفاظ على نفس المسار الأساسي.

Comments

Popular posts from this blog

How to add Social Share Buttons Every Blogger Posts

خطوات كتابة مقالة متوافقة مع السيو 2022

تهنئة بمناسبة شم النسيم