Ich habe benutzerdefinierte Permalinks für verschiedene benutzerdefinierte Beitragstypen auf einer Website erstellt. Sie alle arbeiteten. Bis vor kurzem habe ich noch eine hinzugefügt, mit der ich 8-o nicht anfangen kann. Die "Firma" Struktur funktioniert nicht und gibt eine 404 ..
Kann jemand einen Fehler in meinem Denken entdecken oder mich auf den richtigen Weg bringen? Ich muss etwas sehr dummes vergessen ;-)
Oh, ich bin auch auf die Seite mit den Permalink-Einstellungen gegangen, um die alten Permalinks/den Permalink-Cache/... zu leeren.
Hier ist der Code für die benutzerdefinierte Struktur:
// rewrite rewrite global $ wp_rewrite; $ wp_rewrite-> add_rewrite_tag ("% merkname%", '([^ /] +)', "merk =") ; $ wp_rewrite-> add_permastruct ('merk', '/ merken /% merkname%', false); $ wp_rewrite-> add_rewrite_tag ("% modelname%", '([^ /] +)', "model ="); $ wp_rewrite-> add_permastruct ('model', '/ merken /% merkname% /% modelname%', false); $ wp_rewrite-> add_rewrite_tag ("% carname%", '([^ /] +)', "car ="); $ wp_rewrite-> add_permastruct ('car', '/ merken /% merkname% /% modelname% /% carname%', false); $ wp_rewrite-> add_rewrite_tag ("% firmenname%", '([^ /] +) ', "company ="); $ wp_rewrite-> add_permastruct (' company ','/company /% companyname% ', false); function kw_custom_permalink ($ permalink , $ post, $ leavename) { if (''! = $ permalink &&! in_array ($ post-> post_status, array ('draft', 'pending', 'auto-draft') '))) { $ merkname =' '; $ modelname =' '; $ carname =' '; [.___ _.] $ companyname = ''; if (strpos ($ permalink, '% merkname%')! == false) { $ merkname = $ post-> post_name; } if (strpos ($ permalink, '% modelname%')! == false) { $ merkpost = get_post (get_post_meta ($ post-> ID, "merk", true)); $ merkname = $ merkpost-> post_name; $ modelname = $ post-> post_name; } if (strpos ($ permalink, '% carname%')! == false) { $ merkpost = get_post (get_post_meta ($ post-> ID, "_car_merk", true) ); $ merkname = $ merkpost-> post_name; $ modelpost = get_post (get_post_meta ($ post-> ID, "_car_model", true); $ modelname = $ modelpost-> post_name; $ carname = $ post-> post_name; } if (strpos ( $ permalink, '% companyname%')! == false) { $ company name = $ post-> post_name; } $ permalink = str_replace ( array ( $ leavename? '': '% postname%', '% post_id%', '% merkname%', '% modelname%', '% carname % ', '% companyname% ', $ leavename? '': '% pagename%', ), Array ( $ post-> post_name, $ post-> ID, $ merkname, $ modelname, $ carname, $ firmenname, $ post-> post_name, ), $ permalink ); } return $ permalink; } add_filter ('post_type_link', 'kw_custom_permalink', 10, 3);
Sie platzieren Ihre Umschreiberegeln derzeit im globalen Bereich. Dies bedeutet, dass sie ausgeführt werden, sobald Ihre Datei geladen wird, was möglicherweise zu früh ist. Versuchen Sie stattdessen, sie dem Hook init
hinzuzufügen, oder schreiben Sie sie neu, um stattdessen den Filter generate_rewrite_rules
zu verwenden, z.
add_action('generate_rewrite_rules', 'themes_dir_add_rewrites');
function themes_dir_add_rewrites() {
$theme_name = next(explode('/themes/', get_stylesheet_directory()));
global $wp_rewrite;
$new_non_wp_rules = array(
'css/(.*)' => 'wp-content/themes/'. $theme_name . '/css/$1',
'js/(.*)' => 'wp-content/themes/'. $theme_name . '/js/$1',
'images/wordpress-urls-rewrite/(.*)' => 'wp-content/themes/'. $theme_name . '/images/wordpress-urls-rewrite/$1',
);
$wp_rewrite->non_wp_rules += $new_non_wp_rules;
}
Oder
function josfaber_add_rules() {
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag("%merkname%", '([^/]+)', "merk=");
$wp_rewrite->add_permastruct('merk', '/merken/%merkname%', false);
$wp_rewrite->add_rewrite_tag("%modelname%", '([^/]+)', "model=");
$wp_rewrite->add_permastruct('model', '/merken/%merkname%/%modelname%', false);
$wp_rewrite->add_rewrite_tag("%carname%", '([^/]+)', "car=");
$wp_rewrite->add_permastruct('car', '/merken/%merkname%/%modelname%/%carname%', false);
$wp_rewrite->add_rewrite_tag("%companyname%", '([^/]+)', "company=");
$wp_rewrite->add_permastruct('company', '/company/%companyname%', false);
}
add_action( 'init', 'josfaber_add_rules' );