为什么我需要使用"init" 钩子而不是"admin_init" 钩
init:在加载wordpress的核心之后但在发送标头之前激发
admin init:当用户访问管理区域时,在任何其他挂钩之前??那么这到底意味着什么呢?当然是在init 胡克,不是吗?
$args = array(
\'labels\' => $labels,
\'public\' => true,
);
register_post_type(\'random\', $args);}
add_action(\'admin_init\', \'rdf\', 0);
SO网友:JHoffmann
这个admin_init 在前端查看页面时不会触发挂钩。所以,挂钩register_post_type() 这样做将导致您的自定义帖子类型(及其所有帖子)在前端完全不可用。
截至Rarst\'sanswer to another question, 这个admin_init 钩子在init 钩子,这使得似乎可以使用(优先级值较低)仅为后端注册自定义post类型。但是Plugin Handbook 说应该提前做。
我的建议是使用init 按照一般建议挂钩,仅在以下情况下有条件地注册post类型is_admin() 是真的。
function wpse_254184() {
if ( is_admin() ) {
$args = array(
\'labels\' => $labels,
\'public\' => true,
);
register_post_type(\'random\', $args);
}
}
add_action( \'init\', \'wpse_254184\' );