web-dev-qa-db-fra.com

permastruct pour le type de message personnalisé ne fonctionnant pas dans l'un des quatre cas

J'ai créé des permaliens personnalisés pour différents types de publication personnalisée sur un site Web. Ils ont tous travaillé. Jusqu'à récemment, j'en ai ajouté un autre, que je ne peux pas travailler 8 heures. La structure "société" ne fonctionne pas et donne un 404 ..

Quelqu'un peut-il déceler un défaut dans ma pensée ou me mettre sur la bonne voie? Je dois oublier quelque chose de très stupide ;-)

Oh, je suis aussi allé à la page des paramètres de permalien pour vider l'ancien permalien/cache permanent/...

Voici le code de la structure personnalisée:

// rewrite rewrite 
 global $ wp_rewrite; 
 
 $ wp_rewrite-> add_rewrite_tag ("% merkname%", '([^ /] +)', "merk =") ; 
 $ wp_rewrite-> add_permastruct ('merk', '/ merken /% nom_marque%', false); 
 
 $ wp_rewrite-> add_rewrite_tag ("% nom de modèle%", '([^ /] +)', "model ="); 
 $ wp_rewrite-> add_permastruct ('model', '/' merken /% nom_du_marque% /% modelname% ', false); 
 
 $ wp_rewrite-> add_rewrite_tag ("% carname%", '([^ /] +)', "car ="); 
 $ wp_rewrite-> add_permastruct ('voiture', '/ merken /% merkname% /% modelname% /% carname%', false); 
 
 $ wp_rewrite-> add_rewrite_tag ("% companyname%", '([^ /] +) ', "company ="); 
 $ wp_rewrite-> add_permastruct (' company ','/company /% companyname% ', false); 
 
 function kw_custom_permalink ($ permalink , $ post, $ leavename) {
 
 if (''!! $ permalink &&! in_array ($ post-> post_status, array ('brouillon', 'en attente', 'auto-brouillon '))) {
 
 $ nom-mer =' '; 
 $ nom-modèle =' '; 
 $ carname =' '; [.___ _.] $ companyname = ''; 
 
 if (strpos ($ permalien, '% nom_marque%')!! == false) {
 $ nom_marque = $ post-> post_name; 
} 
 
 if (strpos ($ permalink, '% modelname%')! == false) {
 $ merkpost = get_post (get_post_meta ($ post-> ID, "merk", true)); 
 $ nom-mer = $ merkpost-> post_name; 
 $ nom-modèle = $ post-> post_name; 
} 
 
 if (strpos ($ permalien, '% 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 ( $ permalien, '% companyname%')! == false) {
 $ company name = $ post-> post_name; 
} 
 
 $ permalink = str_replace (
 array (
 $ leavename? '': '% postname%', 
 '% post_id%', 
 '% merkname%', 
 '% modelname%', 
 '% carname % ', 
'% companyname% ', 
 $ leavename? '': '% pagename%', 
), 
 tableau (
 $ post-> post_name, 
 $ post-> ID, 
 $ merkname, 
 $ modelname, 
 $ carname, 
 $ companyname, 
 $ post-> post_name, 
), 
 $ permalien 
); 
 
} 
 return $ permalien; 
} 
 add_filter ('post_type_link', 'kw_custom_permalink', 10, 3);
3
JosFabre

Vous placez actuellement vos règles de réécriture dans la portée globale, ce qui signifie qu'elles s'exécutent dès le chargement de votre fichier, ce qui est peut-être trop tôt. Au lieu de cela, essayez de les ajouter sur le hook init ou de les réécrire pour utiliser le filtre generate_rewrite_rules à la place, par exemple:

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

Extrait de Hongkiat

Ou

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