webentwicklung-frage-antwort-db.com.de

permastruktur für benutzerdefinierten Pfostentyp funktioniert in einem von vier Fällen nicht

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);
3
JosFabre

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;
}

Aus Hongkiat

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' );
1
Tom J Nowell