在我的functions.php 对于我的主题,我注册了5个自定义帖子类型。每个都有一个自定义的分类法,我正在根据它重写url。意味着自定义帖子URL变为http://example.com/cpt-slug/taxonomy-name/cpt-name.
例如,带有“儿童图书”类别的自定义贴子类型“图书”的贴子“儿童图书1号”将成为http://example.com/books/childrens-books/childrens-book-no-1.
每当我注册一个新的帖子类型时,我都需要刷新重写规则,以使permalink分类法重写工作正常。
所以为了不使用flush_rewrite_rules() 超过需要的频率,何时使用?
我知道有一个registered_post_type() 钩子,但它似乎在每次重新加载管理员时都会触发,这使得它成为一个相当耗费资源的操作。
有没有一个钩子只有在new 职位类型是否已注册?
最合适的回答,由SO网友:Jacob Peattie 整理而成
每次加载时都会注册Post类型。它们不存储在数据库或其他类型的持久存储中。帖子是,但不是帖子类型。
因此,刷新重写规则的正确位置是激活主题时。这可以通过after_switch_theme 挂钩:
add_action( \'after_switch_theme\', \'flush_rewrite_rules\' );
对于插件,可以使用激活和停用挂钩:
register_deactivation_hook( __FILE__, \'flush_rewrite_rules\' );
register_activation_hook( __FILE__, \'flush_rewrite_rules\' );