0

When the wordpress menu is saved in the backend, functions hooked on to save_post() run. Is there a way to make these run only when singular items are saved, and not when the menu is saved?

  • Sorry but i am not getting you, What exactly you want !! – Pratik Patel Apr 26 at 11:11
  • 1
    Menus are singular items. Technically. Inside your function you should be checking what kind of post is being saved, and that any data you're expecting exists. If you have code that's causing you trouble, you'll need to share it to get any help. – Jacob Peattie Apr 26 at 11:42
  • 1
    each menu item is a custom post type, you should be checking the post type of the post when the save_post hook runs. Don't assume it only runs for post, it runs for pages, nav menu items, reusable blocks, etc – Tom J Nowell Apr 26 at 11:49
0

As Mr. Peattie and Mr. Nowell pointed out, you should check the post type as one of the first things in your save_post function.

Here's couple of ways how to do it,

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
}

There's also the save_post_{$post->post_type} action that you could use to directly target a certain post type save action.

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
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.