如何在 WordPress 自定義帖子類型 (CPT) 永久鏈接中添加自定義分類法?
已發表: 2020-02-08在 Crunchify 上,我們發表了許多關於 WordPress 自定義帖子類型的文章。 非常流行的教程之一是關於如何創建 WordPress 自定義帖子類型 (CPT) 和分類法。
在本教程中,我們將介紹如何在自定義帖子類型永久鏈接中添加自定義分類?
第1步。 我們正在嘗試什麼?
如果您有一個名為tourist
的自定義分類法和一個名為attraction
的自定義帖子類型。
對於景點,如果我想要以下永久鏈接結構怎麼辦: crunchify.com/<tourist_name>/<attraction_name>
好吧,你來對地方了。
第2步。
請在functions.php中使用下面的自定義帖子類型代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// ================================= Create Attraction Custom Post Type ================================= function crunchify_create_the_attaction_posttype ( ) { $ labels = array ( 'name' = > _x ( 'Attraction' , 'Post Type General Name' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'singular_name' = > _x ( 'Attraction' , 'Post Type Singular Name' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'menu_name' = > esc_html__ ( 'Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'parent_item_colon' = > esc_html__ ( 'Parent Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'all_items' = > esc_html__ ( 'All Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'view_item' = > esc_html__ ( 'View Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'add_new_item' = > esc_html__ ( 'Add New Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'add_new' = > esc_html__ ( 'Add New' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'edit_item' = > esc_html__ ( 'Edit Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'update_item' = > esc_html__ ( 'Update Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'search_items' = > esc_html__ ( 'Search Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'not_found' = > esc_html__ ( 'Not Found' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'not_found_in_trash' = > esc_html__ ( 'Not found in Trash' , 'CRUNCHIFY_TEXT_DOMAIN' ) , ) ; $ args = array ( 'label' = > esc_html__ ( 'attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'description' = > esc_html__ ( 'Attraction' , 'CRUNCHIFY_TEXT_DOMAIN' ) , 'labels' = > $ labels , 'supports' = > array ( 'title' , 'editor' , 'thumbnail' ) , 'taxonomies' = > array ( 'genres' ) , 'hierarchical' = > false , 'public' = > true , 'show_ui' = > true , 'show_in_menu' = > true , 'show_in_nav_menus' = > true , 'show_in_admin_bar' = > true , 'menu_position' = > 100 , 'can_export' = > true , 'has_archive' = > __ ( 'attraction' ) , 'exclude_from_search' = > false , 'publicly_queryable' = > true , 'query_var' = > true , 'show_admin_column' = > true , 'capability_type' = > 'post' , 'rewrite' = > array ( 'slug' = > 'attraction/%tourist%' ) , ) ; register_post_type ( 'attraction' , $ args ) ; } add_action ( 'init' , 'crunchify_create_the_attaction_posttype' , 0 ) ; |

步驟 3。
請在functions.php中使用下面的自定義分類代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// ================================= Custom Post Type Taxonomies ================================= function crunchify_create_the_attaction_taxonomy ( ) { register_taxonomy ( 'tourist' , // This is a name of the taxonomy. Make sure it's not a capital letter and no space in between 'attraction' , //post type name array ( 'hierarchical' = > true , 'label' = > 'Attractions' , //Display name 'query_var' = > true , 'has_archive' = > true , 'rewrite' = > array ( 'slug' = > 'attraction' ) ) ) ; } add_action ( 'init' , 'crunchify_create_the_attaction_taxonomy' ) ; |
第四步。
對於 Attraction Post Type Single Link,添加 Category Slug。
1 2 3 4 5 6 7 8 9 10 11 |
function crunchify_create_post_link ( $ post_link , $ id = 0 ) { $ post = get_post ( $ id ) ; if ( is_object ( $ post ) ) { $ terms = wp_get_object_terms ( $ post - > ID , 'tourist' ) ; if ( $ terms ) { return str_replace ( '%tourist%' , $ terms [ 0 ] - > slug , $ post_link ) ; } } return $ post_link ; } add_filter ( 'post_type_link' , 'crunchify_create_post_link' , 1 , 3 ) ; |
之後,您將開始看到另一個 WordPress 左側面板菜單。
如果您遇到此代碼的任何問題,請告訴我。 快樂的博客。
查看有關自定義帖子類型的另一篇詳細文章。
如何創建 WordPress 自定義帖子類型 (CPT) 和分類法 – Hello World 教程、提示和技巧