SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme

 
SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme

Blog yazmaya başladığımda hiçbir SEO ya da optimizasyon kuralına ya da başka bir şeye uymadım. Sadece paylaşım yapıyordum ve hepsi bu kadardı. Bu da binlerce optimize edilmemiş görsel ve yüzlerce uzun, çok uzun makale biriktirmeme neden oldu.

Daha sonra yeterince optimize ettiğim diğer uzun makaleleri yayınlamaya devam ettim. Yani, bugüne kadar 1500 kelimeden fazla 100 makale, 3500 kelimeden fazla birkaç düzine makale var. Ve 1000 kelimeden fazla olan diğerleri.

SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme 1

Bu metinlerin büyük bir kısmı"her zaman yeşil" ya da zamansız makaleler olarak bilinir. Tipik bir hızlı gönderiden daha kapsamlı metinler oldukları için, genellikle daha iyi sıralanan ve daha sürekli organik trafik alan bağlantılardır. İyi haber bu, kötü haber ise Google URL'leri gruplara göre işlediği için en kötü yüklenen ve kötü ölçümler veren gönderilerin de bunlar olması.

Ve birçok nedenden ötürü bunun düzeltilmesi gerekiyordu.

Neden uzun gönderileri bölüyorsunuz?

Uzun yazıları sayfalara bölmenin tavsiye edilmesinin ana nedeni, özellikle çok sayıda resim ve/veya video ve diğer öğeler içerenlerin yükünü hafifletmektir.

Yükleme hızında gerekli iyileştirmenin ötesinde, daha iyi bir konumlandırma elde etme veya en azından bunu koruma şansını artıracak ve hemen çıkma oranını azaltarak ziyaretçilerin harcadığı süreyi ve oturum başına ziyaret edilen sayfa sayısını artıracaktır.

Ancak, akılda tutulması gereken birkaç husus vardır. SEO'yu sulandırabilecek yeni URL'ler oluşturmamak ve Google ile diğer tarayıcıların içeriği tek bir makale olarak dizine eklemeye devam etmesini sağlamak için orijinal URL'yi koruyun.

En önemli şey, Google'a bunun bir seri olduğunu belirtmek için adresinde rel="next" ve rel="prev" kullanmaktır.

Örneğin, üç sayfaya bölünmüş bir gönderide, ikinci sayfayı ziyaret ederken, kaynak kodunda etiketin içinde şunu bulmanız gerekir

<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/" />

Bazı hususlar

Sadece makaleleri bölmek veya sadece daha fazla sayfa görüntülemesi elde etmek yeterli değildir. Sayfalandırma, doğal navigasyona dayalı belirli bir mantığa sahip olmalıdır. Bunun için kendinizi ziyaretçinin yerine koymalı veya sitenize sanki başka birinin web sitesiymiş gibi göz atmalısınız.

Her alt sayfa tek başına bir sayfa olarak işlev görebilmeli veya en azından öncesinde sayfada ne bulacağınıza dair bilgi ve yeni alt sayfaya mantıklı bir giriş olmalıdır. Zayıf veya az değerli olarak değerlendirilmemesi için yeterli içeriğe sahip olmalıdır. Google"zayıf içeriği" cezalandırır.

Sayfalandırma, makalenin sayfalara bölündüğünü açıkça göstermelidir. En azından ilk sayfaya bir içindekiler tablosu eklemek de kötü bir şey değildir.

"Resmi" bir kural olmamasına rağmen, aşırı sayfalandırmadan kaçının. Genellikle 1500/1800 kelime veya daha fazla olan gönderilerin en fazla iki veya üç sayfaya bölünmesi tavsiye edilir.

Gutenberg'in yerel sayfa sonu bloğuyla gönderiyi bölme

Bunu eklentilerle yapmanın farklı yolları var, ancak bildiğiniz gibi ben mümkün olduğunca az eklenti kullanmaktan yanayım.

Gutenberg'in"Sayfa Sonu" bloğu en iyi seçenektir.

SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme 2

Blok, bölünmüş sayfalara rel="next" ve rel="prev" ve "canonical" etiketlerini ekler, ancak bunların görüntülendiğinden emin olmak istiyorsanız, bu işlevi şablonunuzun functions.php dosyasına dahil edebilirsiniz.

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

Tasarım önemlidir

Sayfalandırmanın görünümü ve unsurları çok önemlidir, çünkü ziyaretçinin makalenin sonraki sayfalarda devam ettiğini hemen anlamasını ve kaç sayfadan oluştuğunu bilmesini sağlarlar.

2- "Sayfa Sonu" bloğu çok temel bir düzen gösterir. Şuna benzer:

SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme 3

Aradığımız şey daha açıklayıcı ve görsel olarak daha çekici bir şey.

SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme 4

İlk resim ilk sayfanın altında, ikincisi ise sonraki sayfalarda gösterilecek olan resimdir.

SEO'yu etkilemeden uzun WordPress yazılarını sayfalara bölme 5

Bu görünüm, functions.php dosyanıza ekleyebileceğiniz toplam koda dahil olan CSS ile elde edilir. İstediğiniz gibi düzenleyebilirsiniz ve blogunuzun renk paletine ve tasarımına uyar.

Kod

İşte şu anda kullandığım kod.

*İhtiyaçlarıma göre uyarlanmıştır, CSS'yi ayırabilir ve değiştirebilir, dil ekleyebilir veya çıkarabilir ve metni değiştirebilirsiniz.

Kod Polylang tarafından kullanılan dilleri bulmak için tasarlanmış olsa da, Polylang kullanmıyorsanız yine de çalışacaktır. Ancak, yalnızca URL şu yapıya sahipse dilleri algılayacaktır: tusitio.com/tr/

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

İlgili makaleler

Este blog se aloja en LucusHost

LucusHost, el mejor hosting