Update Published Page hook

Description

The action hook is executed at the end of “update published content” of a page. Use this hook to copy over data from the revised page to the already published page.

The page hook supports hierarchical articles.

Usage

add_action('owf_update_published_page', 'update_post_meta_info', 10, 2);

Parameters

  • $original_page_id – ID of the published/original page
  • $revised_page- revised page to copy the data from

Example

add_action('owf_update_published_page', 'update_post_meta_info', 10, 2);

function update_post_meta_info($original_post_id, $revised_post) {
   	$post_meta_keys = get_post_custom_keys($revised_post->ID);
   	if (empty($post_meta_keys)) return;

   	foreach ($post_meta_keys as $meta_key) {
   	   $meta_key_trim = trim($meta_key);
         if ( '_' == $meta_key_trim{0} || strpos($meta_key_trim,'oasis') !== false ) //ignore keys like _edit_last, _edit_lock, oasis
            continue;
   		$revised_meta_values = get_post_custom_values($meta_key, $revised_post->ID);
   		$original_meta_values = get_post_custom_values($meta_key, $original_post_id);

   		// find the bigger array of the two
   		$meta_values_count = count($revised_meta_values) > count($original_meta_values) ? count($revised_meta_values) : count($original_meta_values);

   		// loop through the meta values to find what's added, modified and deleted.
   		for($i = 0; $i < $meta_values_count; $i++) {
   		   $new_meta_value = "";
   		   // delete if the revised post doesn't have that key
   		   if (count($revised_meta_values) >= $i+1) {
   			   $new_meta_value = maybe_unserialize($revised_meta_values[$i]);
   		   }
   		   else {
   		      $old_meta_value = maybe_unserialize($original_meta_values[$i]);
   		      delete_post_meta($original_post_id, $meta_key, $old_meta_value);
   		      continue;
   		   }

   			// old meta values got updated, so simply update it
   			if (count($original_meta_values) >= $i+1) {
   			   $old_meta_value = maybe_unserialize($original_meta_values[$i]);
   			   update_post_meta($original_post_id, $meta_key, $new_meta_value, $old_meta_value);
   			}

   			// new meta values got added, so add it
   			if (count($original_meta_values) < $i+1) {
   			   add_post_meta($original_post_id, $meta_key, $new_meta_value);
   			}

   		}
   	}

Source Code

The action hook is located in class-ow-revision-service.php