Schlagen einer Mauer mit folgendem:
Ich habe:
- 1 benutzerdefinierter Beitragstyp aufgerufen
cpt_community
- 1 benutzerdefinierte Taxonomie aufgerufen
tax_community
Wenn ich 'rewrite' => true
in meiner CPT-Registrierung festgelegt habe, haben Permalinks zu einem Eintrag für dieses CPT die Form von http://<domain>/cpt_community/test_item/
und ich erhalte beim Surfen eine 404.
Wenn ich setze 'rewrite' => false
, sind es Permalinks http://<domain>/?cpt_community=test_item/
, und das funktioniert gut.
Also mache ich offensichtlich etwas falsch / dumm - die Frage ist, was?
[Aktualisieren]
- Nach jeder Änderung lösche ich die Regeln, indem ich zu Einstellungen> Permalinks gehe (und speichere).
- Nachdem Sie eine Stunde lang alles in Ruhe gelassen haben, haben die Dinge richtig funktioniert - warum also die Verzögerung?
Code
CPT-Registrierung
function community_post_type() {
$labels = array('name' => 'Community');
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => false,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'has_archive' => true,
'supports' => array('title','editor','excerpt','custom-fields','comments','revisions','thumbnail','author','page-attributes')
);
register_post_type('cpt_community', $args);
}
add_action( 'init', 'community_post_type' );
Benutzerdefinierte Taxonomie-Registrierung
function community_tax_type() {
register_taxonomy(
'tax_community',
'cpt_community',
array( 'hierarchical' => false,
'label' => 'Community Content Type',
'show_ui' => true,'query_var' => true,
'rewrite' => true,
'singular_label' => 'Community Content Type',
'capabilities' => array('assign_terms' => 'edit_community_tags')
)
);
# allow roles to add community taxonomy tags to a community CPT
$roles = array("subscriber","contributor","author","editor","administrator");
foreach ($roles as $role_name) {
$role = get_role($role_name);
$role->add_cap("edit_community_tags");
}
}
add_action( 'init', 'community_tax_type' );
Antworten:
Verwenden Sie die Funktion flush_rewrite_rules (), um die Umschreiberegeln neu festzulegen, jedoch nicht mit Ihrem Code auf init-hook, sondern nur auf dem Aktivierungs-Plugin oder -Thema! Weitere Informationen finden Sie in meinem Beitrag: http://wpengineer.com/2044/custom-post-type-and-permalink/
Spülregeln nur bei Aktivierung (und Deaktivierung). Mach es nicht an einem anderen Haken.
quelle
Gehen Sie einfach zu Einstellungen> Permalinks, um die Regeln zu flashen. Es wird kein Code benötigt. Sie müssen die Struktur nicht aktualisieren, nur das Öffnen dieser Administrationsseite erledigt den Job
quelle