你能让主题选项页面打开/关闭注册的定制帖子类型吗?

时间:2014-07-21 作者:CuCo

我有一个用于多站点安装的主题,该主题将由一个组织的6个子品牌使用。每个子品牌只需要一些由主题设置的自定义帖子类型,因此我想隐藏那些不需要的。

该主题有一个选项页面,我可以在其中设置一个变量,以说明哪个品牌正在使用该主题。然后我可以得到函数吗。php检查变量设置为什么,然后根据该变量注册post类型?

例如,如果是brandX,则注册post类型A和;C、 如果是brandY,则注册post type B,如果是BrandC,则注册none。

2 个回复
SO网友:Romain

如果可以获得品牌的动态变量值,则可以加载所需的CPT。

内部功能。php创建指向新函数“remove\\u cpt\\u multisite”的链接。例如:

// Remove menu items for users 
include (TEMPLATEPATH . \'/assets/functions/remove_cpt_multisite.php\');
模板本身(remove\\u cpt\\u multisite.php):

<?
       add_action( \'admin_init\', \'my_remove_menu_pages\' );
       function my_remove_menu_pages() {
          $my_brand_variable = "get your variable";
          // According to the value add wanted CPT with a switch
          switch ($my_brand_variable) {
             case "brand1":
                include (TEMPLATEPATH . \'/assets/functions/register_cpt_1.php\');
                include (TEMPLATEPATH . \'/assets/functions/register_cpt_5.php\');
             break;
             case "brand2":
                include (TEMPLATEPATH . \'/assets/functions/register_cpt_1.php\');
                include (TEMPLATEPATH . \'/assets/functions/register_cpt_2.php\');
             break;
          }
      }
?>

SO网友:CuCo

对,我是从另一个角度来讨论这个问题的。我正常注册了所有的帖子。然后根据变量集,它将从后端删除菜单。

function remove_menu_items() {
    global $brandChoice; 
    if ( $brandChoice == \'brand1\' ) {
        remove_menu_page( \'edit.php?post_type=cpt1\' );
    } else if ( $brandChoice == \'brand2\' ) {
        remove_menu_page( \'edit.php?post_type=cpt2\' );
    } else {
        // something else
    }
}
add_action( \'admin_menu\', \'remove_menu_items\' );
现在,这正如我所希望的那样发挥作用,因为我在主题选项的品牌变量中更改了品牌,然后加载任何其他后端页面,菜单结构将更改为仅显示我想要查看的CPT。

结束

相关推荐