Ejemplo n.º 1
0
 public function test_has_moves()
 {
     $tracker = new BU_Navigation_Reorder_Tracker('page');
     $this->assertFalse($tracker->has_moves());
     // Check against post that has moved
     $post = get_post($this->posts['grandchild_one']);
     wp_update_post(array('ID' => $post->ID, 'menu_order' => 2));
     $moved = get_post($this->posts['grandchild_one']);
     $tracker->mark_post_as_moved($moved);
     $this->assertTrue($tracker->has_moves());
 }
Ejemplo n.º 2
0
 /**
  * Update navigation related meta data on post save
  *
  * WordPress will handle updating of post_parent and menu_order prior to this callback being run
  * The post property of stored in this object will hold the post data prior to update
  *
  * @todo don't hard code meta keys
  */
 public function save($post_id, $post)
 {
     if (!in_array($post->post_type, $this->plugin->supported_post_types())) {
         return;
     }
     if ('auto-draft' == $post->post_status) {
         return;
     }
     if (array_key_exists('nav_label', $_POST)) {
         // update the navigation meta data
         $nav_label = wp_kses_post($_POST['nav_label']);
         $exclude = array_key_exists('nav_display', $_POST) ? 0 : 1;
         update_post_meta($post_id, BU_NAV_META_PAGE_LABEL, $nav_label);
         update_post_meta($post_id, BU_NAV_META_PAGE_EXCLUDE, $exclude);
     }
     // Perform reordering if post parent or menu order has changed
     $reorder = new BU_Navigation_Reorder_Tracker($post->post_type);
     // Reorder old and new section if parent has changed
     if ($this->post->post_parent != $post->post_parent) {
         $reorder->mark_post_as_moved($post);
         $reorder->mark_section_for_reordering($this->post->post_parent);
     } else {
         if ($this->post->menu_order != $post->menu_order) {
             $reorder->mark_post_as_moved($post);
         }
     }
     // Reorder
     if ($reorder->has_moves()) {
         $reorder->run();
     }
 }