我对php非常陌生,所以如果这是一个简单的方法,请原谅我。
我一整天都在尝试在循环中添加操作,但我就是无法让它工作。我试图修改wp插件,以便它将为安装中的所有自定义post类型触发如下所示:
$args = array(
'public' => true,
'_builtin' => false
);
foreach ( get_post_types( $args ) as $type ){
add_action( "publish_" . $type, 'duplicate_title_buwp_bc' ) ;
}我可以单独添加操作,但这当然意味着我需要预先了解加载了哪些post类型。
任何帮助都将不胜感激。
发布于 2018-01-04 22:06:29
正如Milo在他们的评论中所暗示的那样,定制的post类型只能在init钩子上注册。因此,如果您试图在init之前获取所有公共的而不是内置的post类型,那么get_post_types()将返回一个空数组。(您可以使用get_post_types()在init之前获取内置post类型。)
您需要做的是在init之后连接,然后获取post类型。我会使用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' ) ;
}
}https://wordpress.stackexchange.com/questions/290170
复制相似问题