‘product’,
‘post_status’ => ‘publish’,
‘posts_per_page’ => -1,
‘orderby’ => ‘title’,
‘order’ => ‘ASC’,
‘no_found_rows’ => true,
));
$product_cards = array();
if ($products_query->have_posts()) {
while ($products_query->have_posts()) {
$products_query->the_post();
$product_id = get_the_ID();
$product_title = get_the_title($product_id);
$product_url = get_permalink($product_id);
$product_terms = get_the_terms($product_id, ‘product_category’);
$product_category = ”;
if (!is_wp_error($product_terms) && is_array($product_terms) && !empty($product_terms)) {
$product_category = $product_terms[0]->name;
}
$specs = get_field(‘comparison_specs’, $product_id);
$specs = is_array($specs) ? $specs : array();
$rated_power_value = isset($specs[‘rated_power_value’]) ? $specs[‘rated_power_value’] : get_field(‘comparison_specs_rated_power_value’, $product_id);
$rated_power_status = isset($specs[‘rated_power_status’]) ? $specs[‘rated_power_status’] : get_field(‘comparison_specs_rated_power_status’, $product_id);
$thrust_value = isset($specs[‘thrust_value’]) ? $specs[‘thrust_value’] : get_field(‘comparison_specs_thrust_value’, $product_id);
$thrust_unit = isset($specs[‘thrust_unit’]) ? $specs[‘thrust_unit’] : get_field(‘comparison_specs_thrust_unit’, $product_id);
$thrust_status = isset($specs[‘thrust_status’]) ? $specs[‘thrust_status’] : get_field(‘comparison_specs_thrust_status’, $product_id);
$nominal_voltage = isset($specs[‘nominal_voltage’]) ? $specs[‘nominal_voltage’] : get_field(‘comparison_specs_nominal_voltage’, $product_id);
$voltage_status = isset($specs[‘voltage_status’]) ? $specs[‘voltage_status’] : get_field(‘comparison_specs_voltage_status’, $product_id);
$capacity_ah = isset($specs[‘capacity_ah’]) ? $specs[‘capacity_ah’] : get_field(‘comparison_specs_capacity_ah’, $product_id);
$capacity_wh = isset($specs[‘capacity_wh’]) ? $specs[‘capacity_wh’] : get_field(‘comparison_specs_capacity_wh’, $product_id);
$capacity_status = isset($specs[‘capacity_status’]) ? $specs[‘capacity_status’] : get_field(‘comparison_specs_capacity_status’, $product_id);
$verified_metrics = array();
if ($rated_power_value !== ” && $rated_power_value !== null) {
$verified_metrics[] = ‘‘ . esc_html($rated_power_value) . ‘ W rated power’;
}
if ($thrust_value !== ” && $thrust_value !== null) {
$thrust_display = esc_html($thrust_value);
if ($thrust_unit !== ” && $thrust_unit !== null) {
$thrust_display .= ‘ ‘ . esc_html($thrust_unit);
}
$verified_metrics[] = ‘‘ . $thrust_display . ‘ stated thrust’;
}
if ($nominal_voltage !== ” && $nominal_voltage !== null) {
$verified_metrics[] = ‘‘ . esc_html($nominal_voltage) . ‘ V nominal voltage’;
}
if ($capacity_wh !== ” && $capacity_wh !== null) {
$verified_metrics[] = ‘‘ . esc_html($capacity_wh) . ‘ Wh capacity’;
} elseif ($capacity_ah !== ” && $capacity_ah !== null) {
$verified_metrics[] = ‘‘ . esc_html($capacity_ah) . ‘ Ah capacity’;
}
if (empty($verified_metrics)) {
continue;
}
$image_html = ”;
$thumbnail_id = get_post_thumbnail_id($product_id);
if ($thumbnail_id) {
$image_html = wp_get_attachment_image(
$thumbnail_id,
‘medium’,
false,
array(
‘class’ => ‘h-full w-full object-cover’,
‘loading’ => ‘lazy’,
‘decoding’ => ‘async’,
‘sizes’ => ‘(min-width: 1024px) 20vw, (min-width: 640px) 50vw, 100vw’,
‘alt’ => $product_title,
)
);
}
if (!$image_html) {
$gallery = get_field(‘product_gallery’, $product_id);
$gallery_image = is_array($gallery) && !empty($gallery) ? $gallery[0] : null;
$gallery_url = ”;
$gallery_alt = $product_title;
if (is_array($gallery_image)) {
$gallery_url = isset($gallery_image[‘url’]) ? $gallery_image[‘url’] : ”;
$gallery_alt = isset($gallery_image[‘alt’]) && $gallery_image[‘alt’] !== ” ? $gallery_image[‘alt’] : $product_title;
} elseif (is_numeric($gallery_image)) {
$gallery_id = (int) $gallery_image;
$gallery_url = wp_get_attachment_image_url($gallery_id, ‘medium’);
$gallery_alt = get_post_meta($gallery_id, ‘_wp_attachment_image_alt’, true) ?: $product_title;
} elseif (is_string($gallery_image)) {
$gallery_url = $gallery_image;
}
if ($gallery_url) {
$gallery_url_escaped = esc_url($gallery_url);
$gallery_alt_escaped = esc_attr($gallery_alt);
$image_html = <<
HTML;
}
}
if (!$image_html) {
$placeholder_alt = esc_attr(‘Product image placeholder for ‘ . $product_title);
$image_html = <<
HTML;
}
$product_title_escaped = esc_html($product_title);
$product_category_escaped = esc_html($product_category ?: ‘Product’);
$product_url_escaped = esc_url($product_url);
$metrics_html = implode(‘
‘, $verified_metrics);
Published specifications
{$product_title_escaped}
{$metrics_html}
Review product
HTML;
}
}
wp_reset_postdata();
?>
B2B SYSTEM SELECTOR
Configure a Starting Point for Your Project
Tell us what you are evaluating. This guided selector organizes your requirements and identifies preliminary product directions using published model data where available.
CATALOG-BASED STARTING POINTS
Preliminary product suggestions
These cards are generated from published product records and populated specification values. They are not installation approvals, final system recommendations or guarantees of performance.
= $product_card ?>
Only populated, model-specific specifications are shown. Empty values are omitted from the preliminary results.
CATALOG-BASED STARTING POINTS
Preliminary product suggestions
ENGINEERING REVIEW GUIDANCE
A clear brief before a commercial decision
The selector is designed to help dealers, brands, integrators and project operators organize the questions that affect system selection. Final decisions require application-specific review.
Craft and total load
Vessel geometry, loaded weight, mounting position and water conditions can affect the appropriate configuration.
Battery and duty cycle
Voltage, capacity, operating duration, installation and handling requirements must be reviewed together.
Documentation and market
Certification and test documents apply only to the relevant product, scope, issuer and status.
Testing before scale
Sample evaluation helps confirm local compatibility before commercial ordering or OEM integration.