尝试在循环中添加_action

时间:2018-01-04 作者:Venutius

我对php非常陌生,所以如果这是一个简单的问题,请原谅我。

我整天都在尝试在循环中添加操作,但我就是无法让它工作。我正在尝试修改一个wp插件,以便在安装中触发所有自定义帖子类型,如下所示:

$args = array(
      \'public\'   => true,
      \'_builtin\' => false
);
foreach ( get_post_types( $args ) as $type ){
add_action( "publish_" . $type, \'duplicate_title_buwp_bc\' ) ;
}
我可以单独添加操作,但这当然意味着我需要提前知道加载了哪些帖子类型。

任何帮助都将不胜感激。

1 个回复
SO网友:Nathan Johnson

正如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\' ) ;
  }
}

结束