save_post() on Menu Save

时间:2019-04-26 作者:vagu0071

当wordpress菜单保存在后端时,连接到save\\u post()的函数将运行。是否有办法使这些仅在保存单个项目时运行,而不在保存菜单时运行?

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

正如Peattie先生和Nowell先生所指出的,您应该将检查帖子类型作为save_post 作用

这里有几种方法,

add_action( \'save_post\', \'prefix_my_save_post_action\', 10, 3 );
function prefix_my_save_post_action( $post_id, $post, $update ) {

  // Check for single post type
  if ( \'my_post_type\' !== $post->post_type ) {
    return;
  }

  // Check multiple post types with in_array()
  $valid_post_types = array(
    \'post\' => true,
    \'page\' => true,
    \'post_type_a\' => true,
    \'post_type_b\' => true
  );
  if ( ! in_array( $post->post_type, $valid_post_types ) ) {
    return;
  }
  // or with isset() <-- uses array keys
  if ( ! isset( $valid_post_types[$post->post_type] ) ) {
    return;
  }

  // Do stuff
}
还有save_post_{$post->post_type} 可用于直接针对特定post类型保存操作的操作。

add_action( \'save_post_my_post_type\', \'prefix_my_save__cpt_post_action\', 10, 3 );
function prefix_my_save_post_action( $post_id, $post, $update ) {
  // No need to check for post type as it is already in the action
  // Do stuff
}

相关推荐

Add extra markup to WP menus

我被要求将一个HTML网站重新开发为一个WP主题,它有一个非常高级的菜单结构,我不太确定如何复制它。第二个菜单项有一个子菜单,但它不仅仅是“li”中的“ul”,还有额外的div等。。因为下拉列表有3列布局,其中2列包含子链接,第3列包含内容。这是一个示例:<ul class=\"nav navbar-nav three\"> <li class=\"dropdown yamm-fw\"> <a href=\"#\" class=\"dropdown-toggl