来自子主题的自定义帖子类型的自定义终结点

时间:2014-09-23 作者:IFightCode

我正在处理一个儿童主题。主主题有一个称为“地点”的自定义帖子类型。我需要把它改成“位置”。但是,我使用wp_post_types 对象

现在我需要更改端点。在前端,URL如下所示domain.com/place/a-permalink. 我需要把它改成domain.com/location/a-permalink

但我无法改变slug。

我查了一些问题,比如this 一但无法理解如何与自定义帖子类型一起使用。我非常需要你的建议。

编辑:在父主题中,以以下方式注册帖子类型:

register_post_type( "$custom_post_type", 
                array(  \'label\'             => CUSTOM_MENU_TITLE,
                        \'labels\'            => array(   \'name\'                  =>  CUSTOM_MENU_NAME,
                                                        \'singular_name\'         =>  CUSTOM_MENU_SIGULAR_NAME,
                                                        \'add_new\'               =>  CUSTOM_MENU_ADD_NEW,
                                                        \'add_new_item\'          =>  CUSTOM_MENU_ADD_NEW_ITEM,
                                                        \'edit\'                  =>  CUSTOM_MENU_EDIT,
                                                        \'edit_item\'             =>  CUSTOM_MENU_EDIT_ITEM,
                                                        \'new_item\'              =>  CUSTOM_MENU_NEW,
                                                        \'view_item\'             =>  CUSTOM_MENU_VIEW,
                                                        \'search_items\'          =>  CUSTOM_MENU_SEARCH,
                                                        \'not_found\'             =>  CUSTOM_MENU_NOT_FOUND,
                                                        \'not_found_in_trash\'    =>  CUSTOM_MENU_NOT_FOUND_TRASH ),
                        \'public\'            => true,
                        \'can_export\'        => true,
                        \'show_ui\'           => true, // UI in admin panel
                        \'_builtin\'          => false, // It\'s a custom post type, not built in
                        \'_edit_link\'        => \'post.php?post=%d\',
                        \'capability_type\'   => \'post\',
                        \'menu_icon\'         => get_bloginfo(\'template_url\').\'/images/favicon.ico\',
                        \'hierarchical\'      => false,
                        \'rewrite\'           => array("slug" => "$custom_post_type"), // Permalinks
                        \'query_var\'         => "$custom_post_type", // This goes to the WP_Query schema
                        \'supports\'          => array(   \'title\',
                                                        \'author\', 
                                                        \'excerpt\',
                                                        \'thumbnail\',
                                                        \'comments\',
                                                        \'editor\', 
                                                        \'trackbacks\',
                                                        \'custom-fields\',
                                                        \'revisions\') ,
                        \'show_in_nav_menus\' => true ,
                        \'taxonomies\'        => array("$custom_cat_type","$custom_tag_type")
                    )
                );
再说一次,我不能触及父主题,我必须从子主题开始做所有事情。

1 个回复
最合适的回答,由SO网友:Cyclonecode 整理而成

注册自定义帖子类型时,应使用rewrite 像这样:

add_action(\'init\', \'create_location\');
function create_location() {
  register_post_type(\'location\',
    array(
      \'labels\' => array(
        \'name\' => __(\'Locations\'),
        \'singular_name\' => __(\'Location\')
      ),
      \'public\' => true,
      \'rewrite\' => array(
        \'slug\' => \'location\'
      )
    )
  );
}  
不要忘记更新永久链接example.com/wp-admin/options-permalink.php 然后单击Save Changes.

您还应该能够通过使用register_post_type() 再次从儿童主题。

来自的描述register_post_type():

创建或修改帖子类型。register\\u post\\u type只能通过“init”操作调用。如果在“init”之前调用,它将不起作用,如果稍后调用,新创建或修改的post类型的方面将无法正常工作。

References

Post Types

Modifying post type - using the registered_post_type hook

Function Reference/register post type

结束

相关推荐