web-dev-qa-db-fra.com

Numéro 404 avec type de message personnalisé - Utilisation de Meta pour la réinscription de liens permanents

J'essaie de réécrire mes permaliens en utilisant les métadonnées de mon message. La réécriture permalien fonctionne, mais je reçois le problème 404 lorsque j'essaie d'afficher le message.

J'ai jeté un œil en visitant la page des paramètres de permalien, et toujours pas de dés.

Quelqu'un pourrait-il expliquer pourquoi cela ne fonctionnerait pas?

add_filter('post_type_link','calendar_link_filter',1,3);

function calendar_link_filter( $post_link, $id = 0, $leavename = FALSE ) {
    $post = get_post($id);
    if($post->post_type != 'super_duper') {
            return $post_link;
    }
    $date = get_post_meta($post->ID,'event_start_date',true);
    $date = strtotime($date);
    $str = $post_link;
    $str = str_replace('%cal_year%',date("Y",$date),$str);
    $str = str_replace('%cal_month%',date("m",$date),$str);
    $str = str_replace('%cal_day%',date("d",$date),$str);
    return $str;

}


add_action( 'init', 'create_my_post_types' );

function create_my_post_types() {
register_post_type( 'super_duper',
    array(
        'labels' => array(
            'name' => __( 'Super Dupers' ),
            'singular_name' => __( 'Super Duper' )
        ),
        'hierarchical' => false,
        'show_ui' => true, // UI in admin panel
        'publicly_queryable' => true,
        'rewrite' => true,
        'public' => true,
        'rewrite' => array('slug' => 'events8/%cal_year%/%cal_month%/%cal_day%'),


    )
);
flush_rewrite_rules();
}
1
Joe

En effet, vous devez ajouter les balises de réécriture. Ils indiquent ce qui peut venir à la place de vos tags %cal_year% et similaires:

add_rewrite_tag( '%cal_year%', '([0-9]{4})' );
add_rewrite_tag( '%cal_month%', '([0-9]{1,2})' );
add_rewrite_tag( '%cal_day%', '([0-9]{1,2})' );

Cela fonctionne, mais je ne comprends pas comment: il me semble qu'il manque quelque chose pour que WordPress sache comment passer de 2010/12/31 à 2010-12-31 ou quelle que soit la façon dont vous avez enregistré votre valeur personnalisée. Peut-être que cela revient par défaut à la limace?

1
Jan Fabry