/** * Prepare the items */ public function prepare_items() { // Get current view $view = $this->get_current_view(); // Check if we're in the related view if ('related' == $view) { $this->is_related = true; } // Set table properties $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); // pagination and sorting $screen = get_current_screen(); $per_page = absint(get_user_meta(get_current_user_id(), $screen->get_option('per_page', 'option'), true)); $per_page = $per_page > 0 ? $per_page : 20; $paged = absint(isset($_GET['paged']) ? $_GET['paged'] : 1); $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'title'; $order = isset($_GET['order']) ? $_GET['order'] : 'asc'; // views $this->views(); // Set search if (null !== $this->search) { add_filter('posts_where', array($this, 'filter_posts_where')); } // Get Data $this->data = array(); // Get posts if ('all' == $view) { // Post Type Manager $pt_manager = new RP4WP_Post_Type_Manager(); // Get linked posts $linked_post_types = $pt_manager->get_installed_post_type($this->post_type); // posts $posts = array(); // the posts query $post_query = new WP_Query(array('post_type' => $linked_post_types, 'posts_per_page' => $per_page, 'paged' => $paged, 'suppress_filters' => false, 'orderby' => $orderby, 'order' => $order, 'post_status' => apply_filters('rp4wp_manual_link_post_statuses', array('publish', 'private')))); // Format data for table if ($post_query->have_posts()) { while ($post_query->have_posts()) { $posts[] = $post_query->next_post(); } } } else { $rpm = new RP4WP_Related_Post_Manager(); $parent = intval($_GET['rp4wp_parent']); $posts = $rpm->get_related_posts($parent, $this->post_type, 25); } // Format data for table if (count($posts) > 0) { foreach ($posts as $post) { // Related results only contain ID to keep query fast. Rather have an extra query per post on manual linking than a much heavier query for all linking. if (!isset($post->post_title)) { $post = get_post($post->ID); } $this->data[] = array('ID' => $post->ID, 'title' => $post->post_title, 'post_type' => $post->post_type); } } // Remove search filter remove_filter('posts_where', array($this, 'filter_posts_where')); // Pagination only for all view if ('all' == $view) { $this->set_pagination_args(array('total_items' => $post_query->found_posts, 'per_page' => $per_page)); } // Set items $this->items = $this->data; }
/** * Prepare the items */ public function prepare_items() { // Get current view $view = $this->get_current_view(); // Check if we're in the related view if ('related' == $view) { $this->is_related = true; } // Set table properties $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); // Vies $this->views(); // Set search if ($this->search !== null) { add_filter('posts_where', array($this, 'filter_posts_where')); } // Get Data $this->data = array(); // Get posts if ('all' == $view) { $posts = get_posts(array('post_type' => 'post', 'posts_per_page' => '-1', 'suppress_filters' => false)); } else { $rpm = new RP4WP_Related_Post_Manager(); $parent = $_GET['rp4wp_parent']; $posts = $rpm->get_related_posts($parent); } // Format data for table if (count($posts) > 0) { foreach ($posts as $post) { $this->data[] = array('ID' => $post->ID, 'title' => $post->post_title); } } // Remove search filter remove_filter('posts_where', array($this, 'filter_posts_where')); // Sort if (!$this->is_related) { if (count($this->data) > 0) { usort($this->data, array($this, 'custom_reorder')); } } // Set items $this->items = $this->data; }