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