मूल रूप से मैं कस्टम पोस्ट प्रकारों का उपयोग करके एक शब्दावली प्राप्त करना चाहता हूं और कुछ मुद्दों को स्थापित करना है जिस तरह से मैं उन्हें चाहता हूं। मैं इसे इस तरह चाहता हूँ:
मुख्य शब्दकोष URL:
http://example.com/glossary/
अक्षर A से शुरू होने वाली शब्दावली :
http://example.com/glossary/a/
एकल शब्दावली शब्द का URL:
http://example.com/glossary/a/atomic/
मैंने वास्तव में इसे नीचे दिए गए कोड का उपयोग करके हासिल किया है, लेकिन मुझे यकीन है कि यह करने के लिए बहुत ही अजीब तरीका है और मुझे पता है कि यह कहीं न कहीं खराबी है क्योंकि पेज देखते समय गलत टेम्प्लेट कहा जाता है। Http://example.com/glossary/ को छोड़कर , जहां आर्काइव-सुमो-ग्लॉरी-टर्म.php को उम्मीद के मुताबिक कहा जाता है, अन्य दो मेरी थीम में index.php को सक्रिय करते हैं।
यहाँ जाता है ( functions.php
विषय में):
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');