Pada dasarnya saya ingin mencapai glosarium menggunakan jenis posting khusus dan memiliki beberapa masalah pengaturan penulisan ulang seperti yang saya inginkan. Saya menginginkannya seperti itu:
URL glosarium utama:
http://example.com/glossary/
Istilah glosarium dimulai dengan huruf A :
http://example.com/glossary/a/
URL untuk satu istilah glosarium:
http://example.com/glossary/a/atomic/
Saya benar-benar mencapai ini dengan menggunakan kode di bawah ini tetapi saya yakin itu adalah cara yang sangat canggung untuk melakukannya dan saya tahu itu tidak berfungsi di suatu tempat karena template yang salah dipanggil saat melihat halaman. Kecuali untuk http://example.com/glossary/ , di mana arsip-sumo-glossary-term.php dipanggil seperti yang diharapkan, dua lainnya hanya mengaktifkan index.php dalam tema saya.
Ini dia ( functions.php
dalam tema):
add_action('init', 'create_glossary');
function create_glossary()
{
register_post_type
(
'sumo-glossary-term',
array
(
'labels' => array
(
'name' => _x('Glossary Terms', 'post type general name'),
'singular_name' => _x('Glossary Term', 'post type singular name')
# And so on …
),
'supports' => array('title', 'editor', 'thumbnail'),
'public' => true,
'rewrite' => array
(
'slug' => 'glossary',
'with_front' => false
),
'query_var' => 'glossary-term',
'has_archive' => true
)
);
register_taxonomy
(
'sumo-glossary-letter',
'sumo-glossary-term',
array
(
'hierarchical' => true,
'labels' => array
(
'name' => _x('Letters', 'taxonomy general name'),
'singular_name' => _x('Letter', 'taxonomy singular name')
# And so one
),
'show_ui' => true,
'query_var' => 'glossary-letter',
'rewrite' => false
)
);
}
add_filter('post_type_link', 'glossary_term_permalink', 10, 4);
function glossary_term_permalink($post_link, $post, $leavename, $sample)
{
if ($post->post_type == 'sumo-glossary-term')
{
$permalink = str_replace('glossary/', 'glossary/' . $post->post_name[0] . '/', $post_link);
}
return $permalink;
}
add_rewrite_rule('^glossary/([^/]*)?$','index.php?glossary-letter=$matches[1]','top');
add_rewrite_rule('^glossary/([^/]*)/([^/]*)?$','index.php?glossary-term=$matches[2]','top');