正如Milo在其注释中所提示的,自定义帖子类型只能在init
钩因此,如果您之前试图获取所有公共但不是内置的帖子类型init
, 然后get_post_types()
将返回空数组。(您可以使用get_post_types()
要在init
.)
你需要做的是在init
然后获取帖子类型。我会用wp_loaded
因为此时,WordPress已完全加载。
add_action( \'wp_loaded\', \'wpse290170_wp_loaded\' );
function wpse290170_wp_loaded() {
$types = get_post_types( [
\'public\' => true,
\'_builtin\' => false
] );
foreach ( $types as $type ){
add_action( "publish_" . $type, \'duplicate_title_buwp_bc\' ) ;
}
}