Wordpress自定义帖子类型:父子关系

时间:2014-08-25 09:08:45

标签: wordpress

如何在不使用wordpress中的任何插件的情况下维护自定义帖子类型中的父子关系?

例如: 当你访问这个网站时

  

http://www.volunteeringnepal.com/

你可以找到志愿者影响菜单。在此菜单下,我已制作volunteers_impact分类法,通过使用名为gdcpt自定义帖子类型的插件对志愿者影响进行分类。但我想在不使用任何插件的情况下这样做,最重要的是我想保持父子关系。

在此网站中,单击

  

www.volunteeringnepal.com/volunteers_impact/volunteering-impact-2013

你会发现2013年的志愿者影响力。分类名称是voluteers_impact,但我想保留分类标识名volunteer-impact,这对于SEO目的是有益的。

在提供自定义帖子类型和分类名称时,此插件建议仅使用下划线来连接两个单词。

点击单页假设

  

http://www.volunteeringnepal.com/volunteer-impact/women-empowerment-2013/

您将看到帖子名称(志愿者影响)和分类名称(志愿者_影响)的区别。我如何对其进行分类以使网址结构相同。例如:

  

volunteeringnepal.com/volunteer-impact/volunteering-impact-2013

用于分类和

volunteeringnepal.com/volunteer-impact/women-empowerment-2013

1 个答案:

答案 0 :(得分:0)

使用连字符(-)分隔自定义分类法和自定义帖子类型中的单词只是不好的做法。您不应该在分类/自定义帖子类型名称中使用任何特殊字符,数字或大写字母,因为它们在命名自定义模板后会非常麻烦。这些会破坏模板层次结构,并且将忽略所有自定义模板的使用。你可以自己去尝试一下。只应使用下划线(_)。

我总是尝试使用单个词来进行分类和发布类型名称,因为它们在这种情况下不太容易失败。使用起来也更清洁。

要保留您所使用的网址结构,您应该创建一个自定义重写规则来为您处理

修改

以下是为主题添加自定义分类和自定义帖子类型的代码。只需在functions.php中添加它即可。去玩游戏

function event_post_example() {

register_post_type( 'event_type',
    array(
    'labels' => array(
        'name' => __('Events Posts', 'baretheme'),
        'singular_name' => __('Event Post', 'baretheme'),
        'all_items' => __('All Event Posts', 'baretheme'),
        'add_new' => __('Add New Event Post', 'baretheme'),
        'add_new_item' => __('Add New Event Type', 'baretheme'),
        'edit' => __( 'Edit', 'baretheme' ),
        'edit_item' => __('Edit Post Types', 'baretheme'),
        'new_item' => __('New Post Type', 'baretheme'),
        'view_item' => __('View Post Type', 'baretheme'),
        'search_items' => __('Search Post Type', 'baretheme'),
        'not_found' =>  __('Nothing found in the Database.', 'baretheme'),
        'not_found_in_trash' => __('Nothing found in Trash', 'baretheme'),
        'parent_item_colon' => ''
    ), /* end of arrays */
    'description' => __( 'This is the example event post type', 'baretheme' ), /* Custom Type Description */
    'public' => true,
    'publicly_queryable' => true,
    'postids_from_search' => false,
    'show_ui' => true,
    'query_var' => true,
    'menu_position' => 9,
    'menu_icon' => get_stylesheet_directory_uri() . '/library/images/custom-post-icon.png',
    'rewrite'   => array( 'slug' => 'event_type', 'with_front' => false ),
    'has_archive' => 'event_type',
    'capability_type' => 'post',
    'hierarchical' => false,

    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky')
    ) /* end of options */
); /* end of register post type */

register_taxonomy( 'event_cat','event_type',
    array(
        'labels' => array(
        'name' => __( 'Event Categories', 'baretheme' ),
        'singular_name' => __( 'Event Category', 'baretheme' ),
        'search_items' =>  __( 'Search Event Categories', 'baretheme' ),
        'all_items' => __( 'All Event Categories', 'baretheme' ),
        'parent_item' => __( 'Parent Event Category', 'baretheme' ),
        'parent_item_colon' => __( 'Parent Event Category:', 'baretheme' ),
        'edit_item' => __( 'Edit Event Category', 'baretheme' ),
        'update_item' => __( 'Update Event Category', 'baretheme' ),
        'add_new_item' => __( 'Add New Event Category', 'baretheme' ),
        'new_item_name' => __( 'New Event Category Name', 'baretheme' )
    ),
    'hierarchical' => true,
    'show_admin_column' => true,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'event-slug' ),
    )
);

register_taxonomy_for_object_type( 'event_cat', 'event_type' );

}

add_action( 'init', 'event_post_example');