it-swarm.com.de

Wie kann ich die Paginierung nach dem Umschreiben der URL korrigieren? dh www.site.com/players/type/pro/page/3/

Ich habe einen benutzerdefinierten Beitragstyp players und archive-players.php listet sie alle unter einer Adresse wie www.site.com/players auf.

Ich benutze dann eine URL wie www.site.com/players?type=pro, um eine andere Seite nur der Pro-Spieler aufzulisten (modifizierte wp_query basierend auf der benutzerdefinierten Benutzerrolle, daher mache ich das nicht nur mit einer Taxonomie). Ich habe beschlossen, die URL umzuschreiben, damit sie www.site.com/players/pro ist.

Die Seite selbst funktioniert einwandfrei, aber meine Frage ist: Wie kann ich jetzt die Paginierung korrigieren, wenn die URL so etwas wie www.site.com/players/type/pro/page/3/ ist? im moment bekomme ich seite nicht gefunden. Ich benutze wp page-navi für die Paginierung. Tatsächlich funktioniert die Paginierung auch dann nicht, wenn ich sie nur als ?type=pro habe.

Der Code, den ich für das Umschreiben habe, ist unten. Ist es besser, mit WordPress oder Mod_rewrite neu zu schreiben? Ich habe auch keine Erfahrung damit. Gehe ich das richtig an? Ich habe überall andere Fragen und Beiträge gelesen, aber das Ganze verwirrt mich nur.

function add_query_vars($aVars) {
$aVars[] = "type";
return $aVars;
}

add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($aRules) {
$aNewRules = array('players/type/([^/]+)/?$' => 'index.php?post_type=players&type=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}

add_filter('rewrite_rules_array', 'add_rewrite_rules');
5
Andrew

Sie müssen eine weitere Regel hinzufügen, die/page/# der Variablen & paged = # zuordnet.

In Wirklichkeit machen Sie das hier jedoch rückwärts, indem Sie das Regel-Array filtern. Das Aufrufen von add_rewrite_rule, um Ihre Regeln hinzuzufügen, ist ein bisschen sinnvoller.

function plugin_name_add_rewrite_rules() {
  add_rewrite_rule('players/type/([^/]+)/?$',
   'index.php?post_type=players&type=$matches[1]',
   'top');
  add_rewrite_rule('players/type/([^/]+)/page/([0-9]+)?$',
   'index.php?post_type=players&type=$matches[1]&paged=$matches[2]',
   'top');
}
add_filter('init', 'plugin_name_add_rewrite_rules');
10
Otto

Ich kann keinen Kommentar abgeben, aber die ausgewählte Antwort scheint veraltet zu sein. In der neuesten Wordpress-Version scheinen die Regeln aktiviert zu sein, sodass Sie zuerst die Umschreiberegel für die Paginierung hinzufügen müssen, damit dies funktioniert.

z.B.

function plugin_name_add_rewrite_rules() {
    add_rewrite_rule('players/type/([^/]+)/page/([0-9]+)?$','index.php?post_type=players&type=$matches[1]&paged=$matches[2]','top');
    add_rewrite_rule('players/type/([^/]+)/?$','index.php?post_type=players&type=$matches[1]','top');
}
add_filter('init', 'plugin_name_add_rewrite_rules');
0
moonbas3