Update Published Post hook

Description

The action hook is executed at the end of “update published content” of a page. This typically happens when you are signing off the revised post at the end of the workflow.

Use this hook to copy over data from the revised post to the already published post.

Usage

1
add_action('owf_update_published_post', '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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
add_action('owf_update_published_post', '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

Didn't find what you are looking for? Submit a Query

Update Published Page hook