$viewModel §8.2 array shape with `_render_meta` attached. */ if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! isset( $viewModel ) || ! is_array( $viewModel ) ) { return; } $affilun_classes = isset( $viewModel['classes'] ) && is_array( $viewModel['classes'] ) ? $viewModel['classes'] : array(); $affilun_product = isset( $viewModel['product'] ) && is_array( $viewModel['product'] ) ? $viewModel['product'] : array(); $affilun_price = isset( $viewModel['price'] ) && is_array( $viewModel['price'] ) ? $viewModel['price'] : array(); $affilun_buttons = isset( $viewModel['buttons'] ) && is_array( $viewModel['buttons'] ) ? $viewModel['buttons'] : array(); $affilun_render_meta = isset( $viewModel['_render_meta'] ) && is_array( $viewModel['_render_meta'] ) ? $viewModel['_render_meta'] : array(); $affilun_root_class = isset( $affilun_classes['root'] ) ? (string) $affilun_classes['root'] : 'affilun-card'; $affilun_body_class = isset( $affilun_classes['body'] ) ? (string) $affilun_classes['body'] : 'affilun-card__body'; $affilun_title_class = isset( $affilun_classes['title'] ) ? (string) $affilun_classes['title'] : 'affilun-card__title'; $affilun_price_class = isset( $affilun_classes['price'] ) ? (string) $affilun_classes['price'] : 'affilun-card__price'; $affilun_buttons_class = isset( $affilun_classes['buttons'] ) ? (string) $affilun_classes['buttons'] : 'affilun-card__buttons'; $affilun_locale = isset( $affilun_render_meta['locale'] ) && is_string( $affilun_render_meta['locale'] ) && $affilun_render_meta['locale'] !== '' ? $affilun_render_meta['locale'] : null; $affilun_detail_url = isset( $affilun_product['detail_url'] ) ? (string) $affilun_product['detail_url'] : ''; $affilun_affiliate_url = isset( $affilun_product['affiliate_url'] ) ? (string) $affilun_product['affiliate_url'] : ''; $affilun_link_url = $affilun_affiliate_url !== '' ? $affilun_affiliate_url : $affilun_detail_url; $affilun_product_id = isset( $affilun_product['id'] ) ? (string) $affilun_product['id'] : ''; $affilun_title = isset( $affilun_product['title'] ) ? (string) $affilun_product['title'] : ''; $affilun_price_visible = ! empty( $affilun_price['visible'] ); $affilun_price_label = isset( $affilun_price['label'] ) && is_string( $affilun_price['label'] ) ? $affilun_price['label'] : ''; // Minimal-CTA variation: surface only the FIRST button the // ViewModel produced after Phase-5 button-policy filtering. // Inline CTAs deliberately collapse to a single primary action so // the surrounding paragraph flow stays intact. $affilun_primary_button = null; foreach ( $affilun_buttons as $affilun_candidate_button ) { if ( is_array( $affilun_candidate_button ) ) { $affilun_primary_button = $affilun_candidate_button; break; } } ?>