Pourquoi Wordpress utilise-t-il "pièce jointe" dans la chaîne de requête d'un type de publication personnalisé?
Bien que ma structure soit légèrement contournée, je ne peux pas sembler savoir où "l'attachement" entre en jeu et comment changer ce comportement.
Mon type de message personnalisé 'fb_entry' a la taxonomie personnalisée 'problème'. Les messages de 'fb_entry' sont réécrits avec le slug 'journal /% numéro%', où% numéro% est le nom du terme. J'ai aussi un deuxième type de message personnalisé appelé 'fb_issue' dont les messages sont réécrits avec le slug 'journal'. Il y a aussi une page avec le slug 'journal'.
Voici comment cela est censé fonctionner:
Tout cela semble bien fonctionner jusqu'à la dernière étape au cours de laquelle l'utilisateur atteint 404 pages. La barre d’outils de débogage me dit que la demande est:
Mais la chaîne de requête est:
Cependant, aucune de mes requêtes n'appelle des pièces jointes.
MODIFIER
Voici l'enregistrement du type de post. Standard, je pense:
Normalement, je pense:
/* Create the 'Entry' post type */
function create_fb_entry(){
register_post_type( 'fb_entry',
array(
'labels' => array(
'name' => 'Entries',
'singular_name' => 'Entry',
'add_new' => 'Add New Entry',
'add_new_item' => 'Add New Entry',
'edit_item' => 'Edit Entry',
'new_item' => 'New Entry'
),
'public' => true,
'rewrite' => array(
'slug' => 'journal/%issue%',
'with_front' => false,
),
'supports' => array(
'title',
'editor',
'excerpt',
'page-attributes',
'revisions',
'thumbnail'
)
)
);
}
add_action('init', 'create_fb_entry');
function create_fb_entry_issue() { /* Create the 'Issue' taxonomy */
$labels = array(
'name' => _x( 'Issue', 'issue' ),
'singular_name' => _x( 'Issue', 'issue' ),
'search_items' => __( 'Search Issues' ),
'all_items' => __( 'All Issues' ),
'parent_item' => __( 'Parent Issue' ),
'parent_item_colon' => __( 'Parent Issue:' ),
'edit_item' => __( 'Edit Issue' ),
'update_item' => __( 'Update Issue' ),
'add_new_item' => __( 'Add New Issue' ),
'new_item_name' => __( 'New Issue' )
);
register_taxonomy( 'issue',
array( 'fb_entry' ),
array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'issue',
'with_front' => false
)
)
);
}
add_action( 'init', 'create_fb_entry_issue', 0 );
EDIT 2
Pour plus de clarté, voici le code que j'utilise pour réécrire% issue%:
function fb_issue_permalink($permalink, $post_id, $leavename) {// Fix dynamic 'issue'/'fb_entry' slug in 'fb_entry' permalink
if (strpos($permalink, '%issue%') === FALSE) return $permalink;
// Get post
$post = get_post( $post_id );
if( ! $post ) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms( $post->ID, 'issue' );
if( ! is_wp_error( $terms ) && ! empty( $terms ) && is_object( $terms[0] ) ) $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'unpublished'; // Substitute 'journal issue' in slug if 'journal entry' is not categorized
return str_replace('%issue%', $taxonomy_slug, $permalink);
}
add_filter('post_link', 'fb_issue_permalink', 10, 3);
add_filter('post_type_link','fb_issue_permalink', 10, 3);
J'ai pu résoudre ce problème et définir l'ordre des règles de réécriture à l'aide de cette classe: http://hmn.md/says/2012/11/08/wordpress-rewrite-rules-hm-core-style/