it-swarm.com.de

Slug von URL für eigenen Beitragstyp entfernen?

Auf www.webhostingbreak.com habe ich benutzerdefinierte Post-Typen für Webhosting-Unternehmen. Ihre URL ist/hosting-directory/und leider haben wir seitdem (aug2010) immer noch alle diese Seiten auf PR0 und die Platzierungen waren insgesamt schrecklich.

Die einzige Vermutung, die ich habe, ist, dass Google aufgrund des Besuchs von/hosting-directory /, der einen 404-Fehler verursacht, möglicherweise keinen PageRank von der Root-Domain auf eine Unterseite von hosting-directory sieht.

Wir wollen/hosting-directory/komplett entfernen. Wir haben das versucht, aber wir konnten keine normalen Beiträge in einer Kategorie zum Laufen bringen.

Gibt es eine Problemumgehung dafür? Benutzerdefinierte Post-Typen haben unsere Rangliste und den PageRank seit August 2010 zerstört.

Sei gesund und rede bald.

1
user4169

Wenn Sie die Schnecke entfernen möchten, müssen Sie eines von zwei (2) Dingen tun:

  1. Verwenden Sie keine benutzerdefinierten Beitragstypen mehr, da Sie anscheinend nicht verstehen, wofür sie verwendet werden sollen. Verwenden Sie stattdessen Seiten. Sie machen bereits genau das, was Sie wollen, was Permalinks angeht.

  2. Fügen Sie eine benutzerdefinierte Umschreiberegel für jedes einzelne 'Hosting-Unternehmen' hinzu, das im Admin wie folgt hinzugefügt wurde:

    add_rewrite_rule('(the-post-slug)/?$','index.php?<post type>=$matches[1]','top');
    

    Sie sollten dies zur Datei functions.php Ihres Themas oder in einem Plugin hinzufügen. Ich würde persönlich ein mu-plugin vorschlagen. Sie könnten dies sogar programmgesteuert automatisieren, dies würde jedoch eine zusätzliche Datenbankabfrage pro Seitenladevorgang kosten. Stellen Sie nur sicher, dass Sie diese nicht vor dem Hook 'setup_theme' ausführen (die Rewrite-API wird vor diesem Hook nicht initialisiert). Sich an 'init' zu binden, wäre ziemlich sicher.

    Dann müssten Sie die Umschreiberegeln leeren, indem Sie zu /wp-admin/options-permalinks.php gehen (es reicht aus, nur die Seite zu besuchen.)

2
John P Bloch

Eine andere Möglichkeit, dies zu erreichen, besteht darin, Ihr Plugin mit folgenden Hooks zu erstellen:

add_filter( 'rewrite_rules_array', onFilterRewriteRulesArray ); 
add_action( 'wp_loaded', onLoadedWP );
function onLoadedWP()
{       
    //Must be done once after rules change
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

 function onFilterRewriteRulesArray( $rules )
    {
        $newrules = array();
        $newrules['([^/]+)$'] = 'index.php?brandbook=$matches[1]';
        return $newrules + $rules;
    }

Anstelle von brandbook geben Sie Ihren benutzerdefinierten Beitragstyp name/slug ein.

Sie können reguläre Ausdrücke auch an Ihre Bedürfnisse anpassen.

Mit diesem Code wird die Seite ohne Weiterleitung zum benutzerdefinierten Beitragstyp mit diesen beiden Links geöffnet:

http://localhost/postname
http://localhost/brandbook/postname
0
Evalds Urtans