post_type = $post_type; $this->items_per_page = isset($_GET['per_page']) ? intval($_GET['per_page']) : 10; $this->paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Base query args $base_args = [ 'orderby' => 'title', 'order' => 'ASC', 'post_type' => $this->post_type, 'posts_per_page' => $this->items_per_page, 'paged' => $this->paged, ]; // Add owner_id filter only for non-administrators if (!current_user_can('administrator')) { $base_args['meta_query'] = array( array( 'key' => 'owner_id', 'value' => get_current_user_id(), 'compare' => '=' ) ); } // Merge with any additional query args $this->additional_query_args = array_merge($base_args, $additional_query_args); // Default labels that can be overridden $this->labels = array_merge([ 'title' => ucfirst($post_type) . 's', 'no_items' => 'No ' . strtolower($post_type) . 's found.', 'delete_confirm' => 'Are you sure you want to delete this ' . strtolower($post_type) . '?' ], $labels); } public function render(): void { $query = new WP_Query($this->additional_query_args); $edit_url_base = "/dashboard/" . $this->post_type . "s/edit-" . $this->post_type . "?edit="; ?>
labels['no_items']); ?>