是否重新声明自定义帖子类型的插件和名称?

时间:2017-06-27 作者:Runnick

我正在插件中注册自定义帖子类型,但希望允许插件用户在之后修改它(例如,如果他们正在为客户端安装,等等)

function create_reviews_post_type() {
    register_post_type(\'reviews\', array(
        \'labels\' => array(
            \'name\' => __(\'Reviews\'),
            \'singular_name\' => __(\'Review\')
            ),
        \'public\' => true,
        \'has_archive\' => true,
        )
    );
}
add_action(\'init\', \'create_reviews_post_type\');
实现这一目标的最佳方式是什么?E、 g.我想换衣服name, singular nameslug 在将来。

我知道similar question, 但是

它已经5岁了,我希望有一个更简单的方法,它不包括名字部分

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

WordPress提供register_post_type_args filter 要让用户执行此操作,请执行以下操作:

function wpd_modify_post_type( $args, $post_type ){
    if( \'reviews\' == $post_type ){
        $args[\'labels\'][\'name\'] = \'New name\';
        $args[\'labels\'][\'singular_name\'] = \'New singular name\';
        $args[\'rewrite\'][\'slug\'] = \'new-slug\';
    }
    return $args;
}
add_filter( \'register_post_type_args\', \'wpd_modify_post_type\', 10, 2 );
请记住,如果slug发生更改,用户需要手动刷新重写规则,新slug才能开始工作,这可以通过访问admin中的Settings>Permalinks页面来完成。

SO网友:Spartacus

您可以做一些简单的事情,比如为他们提供要修改的过滤器。

function create_reviews_post_type() {
    $slug = apply_filters(\'plugin_cpt_slug\',\'reviews\');
    $name = apply_filters(\'plugin_cpt_name\',\'Reviews\');
    $sname = apply_filters(\'plugin_cpt_name_singular\',\'Review\');

    register_post_type($slug, array(
        \'labels\' => array(
            \'name\' => __($name),
            \'singular_name\' => __($sname)
            ),
        \'public\' => true,
        \'has_archive\' => true,
        )
    );
}
add_action(\'init\', \'create_reviews_post_type\');
他们可以使用add\\u filter()修改它们,如下所示:

add_filter(\'plugin_cpt_slug\',\'change_plugin_cpt_slug\');
function change_plugin_cpt_slug(){
    return \'complaints\';
}
//etc., etc.
诚然,这是一种冗长的方式,但它确实有效。

结束

相关推荐