web-dev-qa-db-fra.com

Les permaliens personnalisés de type post cassent à cause d'un correctif de bogue 3.1

Je viens donc de mettre à jour un site en 3.1 qui utilise plusieurs types de publication personnalisés.

Lorsque j'avais créé le site, je n'avais pas remarqué à l'époque que le paramètre $post_type pour register_post_type devait être en lettres minuscules! (ce n'était pas bien écrit dans le codex mais maintenant c'est gras ). http://codex.wordpress.org/Function_Reference/register_post_type#Parameters

Mes types de messages personnalisés ont été enregistrés avec une lettre capitole, par exemple "Locations" au lieu de "locations". Ceci a été corrigé en 3.1, de sorte que tous les messages enregistrés avec des lettres majuscules étaient totalement cassés à l'arrière et à l'avant.

J'ai été en mesure de revenir dans la fonction et de la changer en minuscule, puis d'appeler une autre fonction pour mettre à jour la base de données avec le nouveau nom avant son déclenchement, grâce à une publication sur wordpress.org par dennis_f.

Ici nouvelle fonction

if(!get_option('custom_type_updated')){
global $wpdb;
$wpdb->query("UPDATE $wpdb->posts SET post_type = 'custom-rental' WHERE post_type = 'Custom-Rental'");
update_option('custom_type_updated','true');
}

et voici le registre ré-écrit en minuscule

// Custom page template for rentals      -----------------
function Rental_register_post_type() {
    register_post_type( 'custom-rental', array(
        'public'        => true,
        'can_export'    => true,
        'has_archive'   => 'Rentals',
        'rewrite'       => true,
        'supports' => array(
                ** bunch of supports stuff
            ),
        'labels' => array(
            **bunch of labels
            )
        )
    );
}
add_action( 'init', 'Rental_register_post_type', 0 );

Cela a résolu le problème majeur des types de publication personnalisés rompus MAIS le problème est maintenant l'utilisation d'une structure personnalisée de permalien qui rompt le type de publication personnalisé 'locations', seul le travail par défaut fonctionne.

Par exemple, www.example.com/?custom-rental=7-bedrooms fonctionne bien, mais aucune structure de permalien personnalisée ne fonctionne, j'ai essayé chaque type, effacé le .htaccess et renvoyant simplement un 404.

Des idées?

2
Wyck

Pour éviter cela, ajoutez simplement flush_rewrite_rules( false ); après votre fonction register_post_type. vous pouvez en savoir plus à ce sujet ici http://fr.bainternet.info/2011/custom-post-type-getting-404-on-permalinks

2
Bainternet