כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO

Seleccionar idioma
כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO

כשהתחלתי עם הבלוג הזה, לא הקפדתי על שום כלל של SEO, אופטימיזציה או כל דבר אחר. פשוט פרסמתי פוסטים וזהו. כתוצאה מכך, צברתי אלפי תמונות לא מותאמות ומאות מאמרים ארוכים, ארוכים מאוד.

לאחר מכן המשכתי לפרסם מאמרים ארוכים אחרים שאותם אופטימיזתי במידה הנכונה. כך, נכון להיום, ישנם כ-100 מאמרים עם יותר מ-1500 מילים, כמה עשרות עם יותר מ-3500 מילים, ורבים אחרים עם יותר מ-1000 מילים.

כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO 2

רבים מהטקסטים הללו הם מה שמכונה "מאמריםירוקים" או, במילים אחרות, מאמרים נצחיים. מכיוון שמדובר בטקסטים מקיפים יותר מהפוסטים הקצרים הטיפוסיים, הם בדרך כלל הקישורים שמקנים את הדירוג הטוב ביותר ומקבלים את התנועה האורגנית הקבועה ביותר. זו הבשורה הטובה, אך הבשורה הרעה היא שגם היו אלה הפוסטים שנטענו בצורה הגרועה ביותר, מה שהביא למדדים גרועים מכיוון שגוגל מעבד את כתובות ה-URL בקבוצות.

וזה היה צריך לתקן, מסיבות רבות.

למה לחלק פוסטים ארוכים?

הסיבה העיקרית שבגללה מומלץ לחלק פוסטים ארוכים לדפים היא כדי להקל על העומס, במיוחד פוסטים הכוללים תמונות ו/או סרטונים רבים ואלמנטים אחרים.

מעבר לשיפור הנדרש במהירות הטעינה, יגדלו הסיכויים להשיג מיקום טוב יותר, או לפחות לשמור עליו, ויגדל משך השהייה של המבקרים ומספר הדפים הנצפים בכל ביקור, ובכך יפחת שיעור הנטישה.

עם זאת, יש לקחת בחשבון כמה דברים. יש לשמור על כתובת ה-URL המקורית כדי לא ליצור כתובות URL חדשות שעלולות לפגוע ב-SEO, וכדי שגוגל ושאר הדפדפנים ימשיכו לאנדקס את התוכן כמאמר אחד.

החשוב ביותר הוא להשתמש ב-rel="next" ו-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 מילים או יותר לשניים או שלושה עמודים לכל היותר.

חלוקת פוסט באמצעות בלוק הקפיצה לדף המקורי של גוטנברג

ישנן דרכים שונות לעשות זאת באמצעות תוספים, אך כפי שאתם כבר יודעים, אני תומך בשימוש במספר מינימלי של תוספים ככל האפשר.

הבלוק "Page Break" או "קפיצת עמוד" של גוטנברג הוא האפשרות הטובה ביותר.

כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO 3

הבלוק מוסיף את התגים rel="next" ו- rel="prev" ו-"canonical" לדפים המחולקים, אך אם ברצונך לוודא שהם יוצגו, תוכל לכלול פונקציה זו בקובץ functions.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- הבלוק "קפיצת עמוד" מציג פריסה בסיסית מאוד. כך:

כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO 4

ואנחנו מחפשים משהו יותר תיאורי וויזואלי.

כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO 5

התמונה הראשונה תוצג בסוף העמוד הראשון, והשנייה תוצג בעמודים הבאים.

כיצד לחלק פוסטים ארוכים בוורדפרס לדפים מבלי לפגוע ב-SEO 6

מראה זה מושג באמצעות CSS הכלול בקוד הכולל שתוכל להוסיף לקובץ functions.php שלך. תוכל לעצב אותו כרצונך, כך שיתאים לפלטת הצבעים ולעיצוב הבלוג שלך.

קוד

הנה הקוד שאני משתמש בו כרגע.

*זה מותאם לצרכים שלי, אתה יכול להפריד את ה-CSS ולשנות אותו, להוסיף או להסיר שפות ולשנות את הטקסט.

למרות שהקוד נועד לאתר את השפות שבהן משתמש Polylang, הוא יפעל באותה מידה גם אם אינך משתמש ב-Polylang. עם זאת, הוא יזהה את השפות רק אם כתובת ה-URL בנויה כך: tusitio.com/es/

// 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>';
});
Related articles