更改子主题中注册的自定义帖子类型的插件

时间:2015-06-29 作者:Heather

我使用以下命令成功重命名了由父主题在子主题中注册的自定义帖子类型this method. 问题是,我的永久链接没有改变。所以当我改变的时候portfoliohomepage 并使用permalink结构/%category%/%postname%/ 我的URL看起来仍然像mysite。com公司/portfolio/页面/而不是mysite。com公司/homepage/页码/。

这是我用来更改CPT的代码:

add_action( \'wp_loaded\', \'wpse_19240_change_home_labels\', 20 );

function wpse_19240_change_home_labels()
{
global $wp_post_types;
$b = \'portfolio\';

if ( empty ( $wp_post_types[ $b ] )
    or ! is_object( $wp_post_types[ $b ] )
    or empty ( $wp_post_types[ $b ]->labels )
    )
    return;

$wp_post_types[ $b ]->labels->name               = \'Sliders\';
$wp_post_types[ $b ]->labels->singular_name      = \'Slider\';
$wp_post_types[ $b ]->labels->add_new_item       = \'Add New Slider\';
$wp_post_types[ $b ]->labels->edit_item          = \'Edit Slider\';
$wp_post_types[ $b ]->labels->new_item           = \'New Slider\';
$wp_post_types[ $b ]->labels->view_item          = \'View Slider\';
$wp_post_types[ $b ]->labels->search_items       = \'Search Sliders\';
$wp_post_types[ $b ]->labels->not_found          = \'No sliders found.\';
$wp_post_types[ $b ]->labels->not_found_in_trash = \'No sliders found in Trash.\';
$wp_post_types[ $b ]->labels->menu_name          = \'Homepage Sliders\';
$wp_post_types[ $b ]->labels->all_items          = \'All Sliders\';
$wp_post_types[ $b ]->labels->add_new            = \'Add New Slider\';
$wp_post_types[ $b ]->labels->name_admin_bar     = \'Slider\';
}
我使用以下方法成功地更改了slug:

function change_slug_of_post_type_portfolio() {
    register_post_type(\'portfolio\', array(\'rewrite\' => array (\'slug\' => \'homepage\',)));
}
add_action(\'init\', \'change_slug_of_post_type_portfolio\', 20);
但现在,当我导航到系统生成的页面:mysite时,出现了404错误。com/主页/页面/

我确保只创建一个主页。php和我尝试添加flush_rewrite_rules(); 按照中的建议this post 但无济于事。

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

使用您的代码,您可以完全重新定义您的CPT,而不仅仅是修改slug,这可能会改变公共访问

尝试以下操作:

$args = get_post_type_object("portfolio");
$args->rewrite["slug"] = "homepage";
register_post_type($args->name, $args);

结束

相关推荐

从URL中删除/Author/slug会产生404

经过数小时的搜索和尝试不同的功能,我终于成功地从所有用户配置文件URL中删除了/author/。所以它只是/用户名/然而,当新用户注册他们的个人资料URL时,都会给出404。我可以通过进入永久链接屏幕并单击保存来解决这个问题,但我们注册了很多用户,我不能为每个用户都这样做。这是我正在使用的函数。。。有什么想法吗!?谢谢 add_filter(\'author_rewrite_rules\', \'no_author_base_rewrite_rules\'); function no_aut