كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث

No comments

 
كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث

عندما بدأتُ التدوين، لم أتبع أي قواعد لتحسين محركات البحث أو تحسين محركات البحث أو أي شيء آخر. كنت أنشر فقط وهذا كل شيء. وقد تسبب ذلك في تراكم آلاف الصور غير المحسّنة ومئات المقالات الطويلة جداً.

ثم واصلت نشر مقالات طويلة أخرى قمت بتحسينها بما يكفي. لذا، حتى الآن، هناك حوالي 100 مقالة تزيد كلماتها عن 1500 كلمة، وعشرات المقالات التي تزيد كلماتها عن 3500 كلمة. والعديد من المقالات الأخرى التي تزيد عن 1000 كلمة.

كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث 1

عدد غير قليل من هذه النصوص هو ما يعرف باسم المقالات"دائمة الخضرة" أو المقالات الخالدة. نظرًا لأنها نصوص أكثر اكتمالاً من المنشور السريع النموذجي، فهي عادةً ما تكون الروابط التي تحتل مرتبة أفضل وتتلقى حركة مرور عضوية أكثر ثباتًا. هذه هي الأخبار الجيدة، أما الأخبار السيئة فهي أنها أيضًا المقالات التي يتم تحميلها بشكل أسوأ والتي تعطي مقاييس سيئة لأن جوجل تعالج عناوين URL حسب المجموعات.

وكان لا بد من إصلاح ذلك لأسباب عديدة.

لماذا تقسيم المشاركات الطويلة؟

السبب الرئيسي الذي يجعل من المستحسن تقسيم المنشورات الطويلة إلى صفحات هو تخفيف الحمل، خاصة تلك التي تحتوي على العديد من الصور و/أو مقاطع الفيديو والعناصر الأخرى.

بالإضافة إلى التحسين الضروري في سرعة التحميل، سيزيد من فرص تحقيق موقع أفضل، أو على الأقل الحفاظ عليه، وسيزيد من الوقت الذي يقضيه الزوار وعدد الصفحات التي تتم زيارتها في كل جلسة من خلال تقليل معدل الارتداد.

ومع ذلك، هناك بعض الأشياء التي يجب وضعها في الاعتبار. احتفظ بعنوان URL الأصلي حتى لا تنشئ عناوين URL جديدة يمكن أن تضعف من تحسين محركات البحث، وأن يستمر جوجل والمتصفحات الأخرى في فهرسة المحتوى كمقالة واحدة.

الشيء الأكثر أهمية هو استخدام rel="التالي" و rel="prev" في للإشارة إلى جوجل أنها سلسلة.

على سبيل المثال، في منشور مقسّم إلى ثلاث صفحات، عند زيارة الصفحة الثانية، سيتعين عليك أن تجد هذا في الكود المصدري داخل العلامة

<link rel="canonical" href="https://jrmora.com/post-ejemplo/2/" />
<link rel="prev" href="https://jrmora.com/post-ejemplo/" />
<link rel="next" href="https://jrmora.com/post-ejemplo/3/" />

بعض الاعتبارات

لا يكفي مجرد تقسيم المقالات أو مجرد الحصول على المزيد من مشاهدات الصفحة. يجب أن يكون لترقيم الصفحات منطق معين يعتمد على التنقل الطبيعي. لهذا يجب أن تضع نفسك مكان الزائر أو أن تتصفح موقعك كما لو كان موقع شخص آخر.

يجب أن تكون كل صفحة فرعية قادرة على العمل كصفحة قائمة بذاتها أو على الأقل أن تسبقها معلومات حول ما ستجده فيها ومقدمة منطقية للصفحة الفرعية الجديدة. يجب أن تحتوي على محتوى كافٍ بحيث لا تعتبر ضعيفة أو ذات قيمة ضئيلة. يعاقب جوجل على"المحتوى الضعيف".

يجب أن يشير ترقيم الصفحات بوضوح إلى أن المقالة مقسمة إلى صفحات. ولا بأس أيضاً من إضافة جدول محتويات، على الأقل في الصفحة الأولى.

على الرغم من عدم وجود قاعدة "رسمية"، تجنب ترقيم الصفحات المفرط. يُنصح عموماً بتقسيم المنشورات التي تتكون من 1500/1800 كلمة أو أكثر إلى صفحتين أو ثلاث صفحات كحد أقصى.

تقسيم المنشور باستخدام مكوِّن فاصل الصفحات الأصلي من Gutenberg

هناك طرق مختلفة للقيام بذلك باستخدام الإضافات، ولكن، كما تعلم، أفضل استخدام أقل عدد ممكن من الإضافات.

مكوِّن"فاصل الصفحات" في غوتنبرغ هو الخيار الأفضل.

كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث 2

يضيف المكوِّن علامات rel="التالي" و"rel="prev" و"canonical" إلى الصفحات المقسَّمة، ولكن إذا كنتَ تريد التأكُّد من عرضها، يمكنك تضمين هذه الوظيفة في ملف function.php الخاص بقالبك.

// Añadir etiquetas rel="next" y rel="prev" para paginación con Bloque Page Break <!--nextpage--> o Salto de Página
function gp_add_pagination_rel_tags() {
    if (is_singular() && !is_front_page()) {
        global $page, $numpages, $post;
        
        // Solo si hay paginación
        if ($numpages > 1) {
            // Etiqueta rel="prev" (página anterior)
            if ($page > 1) {
                echo '<link rel="prev" href="' . get_permalink($post) . ($page - 1) . '/" />' . "\n";
            }
            
            // Etiqueta rel="next" (página siguiente)
            if ($page < $numpages) {
                echo '<link rel="next" href="' . get_permalink($post) . ($page + 1) . '/" />' . "\n";
            }
        }
    }
}
add_action('wp_head', 'gp_add_pagination_rel_tags');

مسائل التصميم

إن مظهر وعناصر ترقيم الصفحات مهمان للغاية لأنهما سيسمحان للزائر أن يفهم على الفور أن المقالة تستمر في الصفحات التالية ومعرفة عدد الصفحات التي تتكون منها.

2- تُظهر كتلة "فاصل الصفحات" تخطيطًا أساسيًا للغاية. يبدو كالتالي:

كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث 3

وما نبحث عنه هو شيء أكثر وصفاً وجاذبية بصرياً.

كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث 4

الصورة الأولى هي ما سيظهر في أسفل الصفحة الأولى والثانية في الصفحات التالية.

كيفية تقسيم منشورات ووردبريس الطويلة إلى صفحات دون التأثير على تحسين محركات البحث 5

يتم تحقيق هذا المظهر باستخدام CSS المضمن في الكود الكلي الذي يمكنك إضافته إلى function.php الخاص بك. يمكنك تخطيطها كيفما تشاء وتناسب لوحة ألوان مدونتك وتصميمها.

الكود

إليك الرمز الذي أستخدمه الآن.

*إنها مكيّفة حسب احتياجاتي، يمكنك فصل CSS وتعديلها وإضافة لغات أو إزالتها وتغيير النص.

على الرغم من أن الكود مخصص للعثور على اللغات التي تستخدمها Polylang، إلا أنه سيعمل بنفس الطريقة إذا كنت لا تستخدم Polylang. ومع ذلك، فإنه سيكتشف اللغات فقط إذا كان عنوان URL يحتوي على هذه البنية: tusitio.com/ar/

// 1. Eliminar paginaciones automáticas
function remove_all_auto_pagination() {
    if (function_exists('generate_do_post_pagination')) {
        remove_action('generate_after_entry_content', 'generate_do_post_pagination');
    }
    add_filter('wp_link_pages', '__return_empty_string');
}
add_action('wp', 'remove_all_auto_pagination', 5);

// 2. Función auxiliar para números de página
function generate_pagination_numbers($total_pages, $current_page, $base_url) {
    $numbers_html = '';
    for ($i = 1; $i <= $total_pages; $i++) {
        $page_url = ($i == 1) ? $base_url : $base_url . user_trailingslashit($i);
        
        if ($i == $current_page) {
            $numbers_html .= '<span class="current-page">' . $i . '</span>';
        } else {
            $numbers_html .= '<a href="' . esc_url($page_url) . '" class="pagination-link">' . $i . '</a>';
        }
    }
    return $numbers_html;
}

// 3. Paginación multilingüe completa
add_filter('the_content', function($content) {
    global $numpages, $post;
    
    if (!is_singular() || $numpages <= 1) return $content;
    
    $wp_query = $GLOBALS['wp_query'];
    $current_page = $wp_query->get('page') ?: 1;
    $base_url = trailingslashit(get_permalink());
    
    // Sistema de detección de idioma
    $language = 'en';
    $available_langs = ['en','fr','de','es','pt','ru','it','sv','da','fi','nb','el','ar','tr','zh','id','ja','ko','uk','pl','cs','sk','lt','et','ro','hu','nl','bg'];
    
    if (function_exists('pll_current_language')) {
        $detected_lang = pll_current_language();
        $language = in_array($detected_lang, $available_langs) ? $detected_lang : 'en';
    } else {
        $current_uri = esc_url_raw($_SERVER['REQUEST_URI']);
        foreach ($available_langs as $lang) {
            if (strpos($current_uri, '/'.$lang.'/') !== false) {
                $language = $lang;
                break;
            }
        }
    }
    
    // Textos completos para 28 idiomas (solo cambios en finlandés y ruso)
    $localized_texts = [
        'en' => ['Continue reading this post →', 'Pages of this post →'],
        'fr' => ['Continuer à lire cet article →', 'Pages de ce billet →'],
        'de' => ['Diesen Beitrag weiter lesen →', 'Seiten dieses Beitrags →'],
        'es' => ['Seguir leyendo este post →', 'Páginas de este post →'],
        'pt' => ['Continuar a ler esta publicación →', 'Páginas deste post →'],
        'ru' => ['Продолжить чтение →', 'Страницы этого поста →'],
        'it' => ['Continua a leggere questo post →', 'Pagine di questo post →'],
        'sv' => ['Fortsätt läsa detta inlägg →', 'Sidor i detta inlägg →'],
        'da' => ['Læs videre på dette indlæg →', 'Sider i dette indlæg →'],
        'fi' => ['Jatka lukemista →', 'Artikkelin sivut →'],
        'nb' => ['Fortsett å lese denne artikkelen →', 'Artikkelens sider →'],
        'el' => ['Συνεχίστε την ανάγνωση →', 'Σελίδες άρθρου →'],
        'ar' => ['تابع القراءة ←', 'صفحات المقال ←'],
        'tr' => ['Okumaya devam edin →', 'Yazı sayfaları →'],
        'zh' => ['继续阅读 →', '文章分页 →'],
        'id' => ['Lanjutkan membaca →', 'Halaman artikel →'],
        'ja' => ['続きを読む →', 'ページ移動 →'],
        'ko' => ['더 보기 →', 'ページ →'],
        'uk' => ['Читати далі →', 'Сторінки статті →'],
        'pl' => ['Czytaj dalej →', 'Strony artykułu →'],
        'cs' => ['Pokračovat ve čtení →', 'Stránky článku →'],
        'sk' => ['Pokračovať v čítaní →', 'Stránky článku →'],
        'lt' => ['Skaityti toliau →', 'Straipsnio puslapiai →'],
        'et' => ['Jätka lugemist →', 'Artikli leheküljed →'],
        'ro' => ['Continuă lectura →', 'Paginile articolului →'],
        'hu' => ['Tovább olvasom →', 'Cikk oldalai →'],
        'nl' => ['Lees verder →', 'Artikelpagina\'s →'],
        'bg' => ['Прочети още →', 'Страници на статията →']
    ];
    
    $text_index = ($current_page == 1) ? 0 : 1;
    $pagination_text = $localized_texts[$language][$text_index] ?? $localized_texts['en'][$text_index];
    
    // Construcción de la paginación
    $pagination_html = '<div class="custom-pagination-container">';
    $pagination_html .= '<div class="pagination-content">';
    $pagination_html .= '<span class="pagination-text">' . esc_html($pagination_text) . '</span>';
    $pagination_html .= '<div class="pagination-numbers">';
    $pagination_html .= generate_pagination_numbers($numpages, $current_page, $base_url);
    $pagination_html .= '</div></div></div>';
    
    return ($current_page > 1) ? $pagination_html . $content . $pagination_html : $content . $pagination_html;
}, 15);

// 4. CSS optimizado (sin referencias a fuentes)
add_action('wp_head', function() {
    echo '<style>
    /* Estilos base */
    .custom-pagination-container {
        margin: 25px 0;
        padding: 15px 10px;
        background: #f9f9f9;
        border-top: 1px solid #eee;
        border-bottom: 1px solid #eee;
        box-sizing: border-box;
        width: 100%;
    }

    .pagination-content {
        display: flex;
        align-items: center;
        justify-content: center;
        max-width: 800px;
        margin: 0 auto;
    }

    .pagination-text {
        font-weight: 700;
        color: #333;
        margin-right: 10px;
        white-space: nowrap;
    }

    .pagination-numbers {
        display: inline-block;
    }

    .pagination-link,
    .current-page {
        display: inline-block;
        padding: 8px 12px;
        margin: 0 3px;
        border-radius: 4px;
        font-weight: 400;
        font-size: 15px;
        line-height: 1;
        box-sizing: border-box;
        transition: all 0.2s ease;
    }

    .current-page {
        background: #b40006;
        color: white;
        font-weight: 700;
    }

    .pagination-link {
        background: #f5f5f5;
        color: #333;
        text-decoration: none;
    }

    .pagination-link:hover {
        background-color: #e0e0e0;
        transform: translateY(-2px);
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }

    /* Estilos móvil */
    @media (max-width: 600px) {
        .pagination-content {
            flex-direction: row;
            flex-wrap: nowrap;
            overflow-x: auto;
            justify-content: flex-start;
            padding-bottom: 5px;
            -webkit-overflow-scrolling: touch;
        }
        
        .pagination-text {
            font-size: 14px;
            white-space: nowrap;
            flex-shrink: 0;
        }
        
        .pagination-numbers {
            display: flex;
            flex-wrap: nowrap;
            gap: 4px;
        }
        
        .pagination-link,
        .current-page {
            padding: 6px 10px;
            min-width: 32px;
            font-size: 14px;
            margin: 0;
            flex-shrink: 0;
        }
    }
    </style>';
});

Suscríbete para recibir los post en tu email sin publicidad

مقالات ذات صلة

أضف تعليق

Este blog se aloja en LucusHost

LucusHost, el mejor hosting