it-swarm.com.de

Doppelte Kategorie und Seiten-URL laden Kategorie anstelle der Seite

Ich habe eine Kategorie mit der Schnecke service erstellt, die den Permalink hat: https://example.com/service.

und eine Seite mit dem Link: https://example.com/service.

In der Kategorie service gibt es einen Beitrag mit folgendem Link: https://example.com/service/post1

Jetzt leitet der Link https://example.com/service zum Kategoriearchiv weiter, aber ich möchte, dass die Seite stattdessen geladen wird.

Wie kann ich das machen?

2
Thien Sư

Laden Sie Page, wenn ein Page- und ein Category-Archiv dieselbe URL haben:

Dies ist das Standardverhalten von WordPress : Wenn Sie dieselbe URL für ein Kategoriearchiv und für eine Seite haben , WordPress lädt die Seite anstelle des Kategoriearchivs.

Wenn Sie also kein Plugin haben, das dieses Verhalten für Ihr WordPress-Setup ändert, sollte Ihre doppelte URL die Seite und nicht das Kategoriearchiv laden.

So erreichen Sie die richtige URL-Struktur:

Die von Ihnen gewünschte URL-Struktur erfordert einige Arbeit. Befolgen Sie die nachstehenden Anweisungen, um die URL-Struktur zu erhalten, sofern Sie dies noch nicht getan haben:

# URL structure for Pages:
https://example.com/page-slug

Dies geschieht standardmäßig, Sie müssen nichts tun.


# URL structure for Categories
https://example.com/category-slug

Dafür:

  1. Gehen Sie zu: WordPress Admin Panel MenuSettings.
  2. Fügen Sie einen einzelnen Punkt (.) in das Textfeld Category base ein.
  3. Klicken Save Changes Taste.

# URL structure for Posts
https://example.com/category-slug/post-slug

Dafür:

  1. Gehen Sie zu: WordPress Admin Panel MenuSettings.
  2. Wählen Sie Custom Structure und geben Sie /%category%/%postname%/ in das Textfeld Custom Structure ein.
  3. Klicken Save Changes Taste.

Wenn Sie aus irgendeinem Grund nicht das erwartete Ergebnis erhalten, verwenden Sie diese URL-Struktur in einer WordPress-Installation mit:

  1. WordPress Core auf die neueste Version aktualisiert.
  2. Es ist kein Plugin aktiviert
  3. Ein Standarddesign wie Twentyseventeen ist aktiviert

und dann sehen, was mit doppelter Seiten- und Kategorie-URL passiert.

Lösen des Kategorie-Paginierungsproblems:

Wenn Sie überprüfen Sie diesen Beitrag sehen Sie, dass diese Art von URL-Struktur ein Paginierungsproblem in Ihren Kategoriearchivseiten verursacht. Dies geschieht, weil WordPress mit /page/2 Teil als eine andere Seite oder Post verwechselt.

Beispiel: Angenommen, Sie haben eine Kategorie mit dem Namen service und die Kategorie service hat Posts wie web development, hosting usw. mit der folgenden URL:

https://example.com/service
https://example.com/service/web-development
https://example.com/service/hosting

Möglicherweise enthält Ihre Argumentationsseite für die Kategorie service jetzt mehrere Seiten, z. B .:

https://example.com/service
https://example.com/service/page/2
https://example.com/service/page/3

Aufgrund dieser URL-Struktur denkt WordPress, dass Sie versuchen, einen Beitrag zu laden , der den Slug post unter der Kategorie service enthält, und dieser Beitrag ist ein Paginierter Beitrag .

Anstatt also die nächsten Seiten Ihres Archivs der Kategorie service zu laden, wird WordPress versuchen, einen paginierten Beitrag mit dem Slug page zu laden, und stattdessen wird ein Fehler 404 (Seite nicht gefunden) angezeigt.

Um dies zu beheben, können Sie ein einfaches Plugin mit dem folgenden CODE verwenden:

<?php
/*
Plugin Name:  Category Pagination Fix
Plugin URI:   https://wordpress.stackexchange.com/a/308826/110572
Description:  Fix category pagination for possible conflicts with page or post url
Version:      1.0.0
Author:       Fayaz Ahmed
Author URI:   https://www.fayazmiraz.com/
*/

function wpse308326_fix_category_pagination( $query_string = array() )
{
    if( isset( $query_string['category_name'] )
            && isset( $query_string['name'] ) && $query_string['name'] == 'page'
            && isset( $query_string['page'] ) ) {
        $paged = trim( $query_string['page'], '/' );
        if( is_numeric( $paged ) ) {
            // we are not allowing 'page' as a page or post slug 
            unset( $query_string['name'] );
            unset( $query_string['page'] )  ;

            // for a category archive, proper pagination query string  is 'paged'
            $query_string['paged'] = ( int ) $paged;
        }
    }   
    return $query_string;
}
add_filter( 'request', 'wpse308326_fix_category_pagination' );
0
Fayaz