Server IP : 89.26.249.46  /  Your IP : 216.73.216.42
Web Server : Apache
System : Linux a.cp.cloudlink.pt 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User : eticalga ( 1129)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/eticalga/www/files/themes/kobuxeticalgarve/templates/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/eticalga/www/files/themes/kobuxeticalgarve/templates/portfolio.php
<?php

/**
 * Template Name: Portfólio
 *
 * @package kobuxeticalgarve
 */

get_header();
?>

<div id="content">
	<?php while (have_posts()) : the_post(); ?>
		<?php include(locate_template('partials/page-top.php')); ?>

		<div class="site-content">
			<div class="container large">
				<?php get_template_part(
					'partials/archive-filters',
					'',
					array(
						'posttype' => 'projects'
					)
				); ?>
			</div>

			<?php
			$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;
			$args = array(
				'post_type'         => array('projects'),
				'post_status'       => array('publish'),
				'posts_per_page'    => get_option('posts_per_page'),
				'paged'             => $current_page,
				'orderby'           => 'date',
				'order'             => 'DESC',
			);

			$featured_projects = array();
			if ($projects_archive = get_field('projects_archive', 'options')) {
				if ($featured_projects = get_field('featured_projects', $projects_archive)) {
					$featured_count = count($featured_projects);

					$remaining_posts_per_page = ($current_page === 1)
						? max($posts_per_page - $featured_count, 0)
						: $posts_per_page;

					// Calculate offset to keep pagination continuous
					$offset = 0;
					if ($current_page > 1) {
						// For page 2, we’ve already shown (posts_per_page - featured_count) on page 1
						// So we offset by that smaller number + all full pages before
						$offset = ($posts_per_page - $featured_count) + ($posts_per_page * ($current_page - 2));
					}

					$args['posts_per_page'] = $remaining_posts_per_page;
					$args['offset'] = $offset;
					$args['post__not_in'] = $featured_projects;
				}
			}

			// Taxonomy queries
			$tax_query = array();

			if ($post_series_query = kobuxeticalgarve_get_query_var('series')) {
				$tax_query[] = array(
					'taxonomy' => 'series',
					'field'    => 'slug',
					'terms'    => $post_series_query,
				);
			}
			if ($post_funding_query = kobuxeticalgarve_get_query_var('financiamento')) {
				$tax_query[] = array(
					'taxonomy' => 'funding',
					'field'    => 'slug',
					'terms'    => $post_funding_query,
				);
			}
			if ($post_training_area_query = kobuxeticalgarve_get_query_var('area-de-formacao')) {
				$tax_query[] = array(
					'taxonomy' => 'training-area',
					'field'    => 'slug',
					'terms'    => $post_training_area_query,
				);
			}

			if (count($tax_query) > 0) {
				if (count($tax_query) > 1) {
					$tax_query['relation'] = 'AND';
				}
				$args['tax_query'] = $tax_query;
			}

			// Course filter
			if ($post_courses_query = kobuxeticalgarve_get_query_var('cursos')) {
				// Get course IDs from slugs
				$course_ids = array();
				foreach ($post_courses_query as $slug) {
					$course_post = get_page_by_path($slug, OBJECT, 'course');
					if ($course_post && !empty($course_post->ID)) {
						$course_ids[] = $course_post->ID;
					}
				}

				if (!empty($course_ids)) {
					$meta_query = array();

					foreach ($course_ids as $course_id) {
						$meta_query[] = array(
							'key'     => 'related_course',
							'value'   => '"' . $course_id . '"', // ACF relationship stores serialized array of IDs
							'compare' => 'LIKE'
						);
					}

					if (count($meta_query) > 1) {
						$meta_query['relation'] = 'OR';
					}

					$args['meta_query'] = $meta_query;
				}
			}
			?>

			<div class="container xlarge">
				<input id="posts-currentpage" type="hidden" name="currentpage" value="<?php echo $current_page; ?>">
				<div id="posts-wrapper">
					<?php
					$kobu_query = new WP_Query($args);
					$max_pages = $kobu_query->max_num_pages;

					if ($kobu_query->have_posts() || $featured_projects) { ?>
						<?php kobuxeticalgarve_jump_page('prev', $current_page, $max_pages); ?>
						<ul class="articles-list">
							<?php if ($featured_projects && $current_page == 1) {
								foreach ($featured_projects as $post) {
									setup_postdata($post);
									$featured_project_id = get_the_ID();
									include(locate_template('partials/project-card.php'));
								};
								wp_reset_postdata();
								$featured_project_id = null;
							} ?>
							<?php
							while ($kobu_query->have_posts()) : $kobu_query->the_post();
								include(locate_template('partials/project-card.php'));
							endwhile;
							?>
						</ul>
						<?php kobuxeticalgarve_jump_page('next', $current_page, $max_pages); ?>
					<?php } else { ?>
						<ul class="articles-list empty-content">
							<?php get_template_part('content', 'none'); ?>
						</ul>
					<?php } ?>
					<?php wp_reset_postdata(); ?>
				</div>
			</div>

			<?php
			the_content();
			?>
		</div>
	<?php endwhile; ?>
</div>
<?php get_footer(); ?>