首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在循环中尝试add_action

在循环中尝试add_action
EN

WordPress Development用户
提问于 2018-01-04 21:42:16
回答 1查看 1.5K关注 0票数 0

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

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

代码语言:javascript
运行
复制
$args = array(
      'public'   => true,
      '_builtin' => false
);
foreach ( get_post_types( $args ) as $type ){
add_action( "publish_" . $type, 'duplicate_title_buwp_bc' ) ;
}

我可以单独添加操作,但这当然意味着我需要预先了解加载了哪些post类型。

任何帮助都将不胜感激。

EN

回答 1

WordPress Development用户

发布于 2018-01-04 22:06:29

正如Milo在他们的评论中所暗示的那样,定制的post类型只能在init钩子上注册。因此,如果您试图在init之前获取所有公共的而不是内置的post类型,那么get_post_types()将返回一个空数组。(您可以使用get_post_types()init之前获取内置post类型。)

您需要做的是在init之后连接,然后获取post类型。我会使用wp_loaded,因为此时WordPress已经完全加载。

代码语言:javascript
运行
复制
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' ) ;
  }
}
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/290170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档