Outdoor & Travel Exoskeletons
Insights & Resources
GaitExo Blog & News
Explore the latest insights on consumer exoskeleton technology, outdoor mobility, trail gear reviews, and partnership opportunities for distributors across Europe and North America.
From the GaitExo Team
‘post’,
‘post_status’ => ‘publish’,
‘posts_per_page’ => 12,
‘paged’ => $paged,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’,
]);
ob_start();
if ($blog_query->have_posts()) {
echo ‘
while ($blog_query->have_posts()) {
$blog_query->the_post();
$post_id = get_the_ID();
$permalink = get_permalink($post_id);
$title = get_the_title($post_id);
$excerpt = get_the_excerpt($post_id);
$date = get_the_date(‘F j, Y’, $post_id);
$author = get_the_author();
$safe_title = esc_html($title);
$safe_excerpt = esc_html($excerpt);
$safe_date = esc_html($date);
$safe_author = esc_html($author);
$safe_url = esc_url($permalink);
$categories = get_the_category($post_id);
$cat_name = !empty($categories) ? esc_html($categories[0]->name) : ‘General’;
$cat_url = !empty($categories) ? esc_url(get_category_link($categories[0]->term_id)) : ‘#’;
$thumb_id = has_post_thumbnail($post_id) ? get_post_thumbnail_id($post_id) : 0;
if ($thumb_id) {
$alt_text = get_post_meta($thumb_id, ‘_wp_attachment_image_alt’, true) ?: $title;
$thumb_html = wp_get_attachment_image($thumb_id, ‘medium_large’, false, [
‘class’ => ‘w-full h-full object-cover transition-transform duration-500 group-hover:scale-105’,
‘loading’ => ‘lazy’,
‘decoding’ => ‘async’,
‘alt’ => esc_attr($alt_text),
‘sizes’ => ‘(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw’,
]);
} else {
$thumb_html = ‘‘;
}
echo <<
HTML;
}
echo ‘
‘;
$total_pages = $blog_query->max_num_pages;
$current_page = $paged;
if ($total_pages > 1) {
$prev_disabled = $current_page <= 1 ? 'opacity-40 pointer-events-none' : '';
$next_disabled = $current_page >= $total_pages ? ‘opacity-40 pointer-events-none’ : ”;
$prev_page = max(1, $current_page – 1);
$next_page = min($total_pages, $current_page + 1);
$hx_target = ‘#blog-pagination-‘ . esc_attr($block_id);
$hx_swap = ‘innerHTML’;
$prev_params = http_build_query([‘block_id’ => $block_id, ‘paged’ => $prev_page]);
$next_params = http_build_query([‘block_id’ => $block_id, ‘paged’ => $next_page]);
$prev_url = ‘/wp-json/zeroy/v1/htmx/execute/current?’ . $prev_params;
$next_url = ‘/wp-json/zeroy/v1/htmx/execute/current?’ . $next_params;
for ($i = 1; $i <= $total_pages; $i++) {
$page_params = http_build_query(['block_id' => $block_id, ‘paged’ => $i]);
$page_url = ‘/wp-json/zeroy/v1/htmx/execute/current?’ . $page_params;
$is_current = ($i === $current_page);
$active_class = $is_current
? ‘bg-[#1E3A8A] text-white border-[#1E3A8A] font-bold’
: ‘bg-white text-[#374151] border-[#D1D5DB] hover:bg-[#1E3A8A] hover:text-white hover:border-[#1E3A8A]’;
$aria_current = $is_current ? ‘aria-current=”page”‘ : ”;
$show = ($i === 1 || $i === $total_pages || abs($i – $current_page) <= 1);
if (!$show) {
if ($i === 2 || $i === $total_pages - 1) {
echo '‘;
}
continue;
}
echo <<{$i}
HTML;
}
echo <<
HTML;
}
} else {
echo ‘
No posts found. Check back soon!
‘;
}
wp_reset_postdata();
$html = ob_get_clean();
hx_response($html);
exit;
}
?>
max_num_pages;
$current_page = $paged;
if ($total_pages > 1) {
$prev_disabled = $current_page <= 1 ? 'opacity-40 pointer-events-none' : '';
$next_disabled = $current_page >= $total_pages ? ‘opacity-40 pointer-events-none’ : ”;
$prev_page = max(1, $current_page – 1);
$next_page = min($total_pages, $current_page + 1);
$hx_target = ‘#blog-pagination-‘ . esc_attr($block_id);
$prev_params = http_build_query([‘block_id’ => $block_id, ‘paged’ => $prev_page]);
$next_params = http_build_query([‘block_id’ => $block_id, ‘paged’ => $next_page]);
$prev_url = ‘/wp-json/zeroy/v1/htmx/execute/current?’ . $prev_params;
$next_url = ‘/wp-json/zeroy/v1/htmx/execute/current?’ . $next_params;
?>
No Articles Yet
We’re working on great content. Check back soon!