1) { $product_id = AFFL_Shortcode_Context::$product_id; } // 3. Try current post else { $current_post_id = get_the_ID(); if ($current_post_id && get_post_type($current_post_id) === AFFILILABS_CPT_PRODUCT) { $product_id = $current_post_id; } } if (!$product_id) { return null; } // Use Context Cache if available if (AFFL_Shortcode_Context::$product_data && AFFL_Shortcode_Context::$product_data['id'] == $product_id) { return AFFL_Shortcode_Context::$product_data; } return AFFLProductService::get_product_by_id($product_id); } /** * [affl_name id="123"] */ function affl_name_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_name'); if (is_string($product_data)) { return $product_data; } return esc_html($product_data['name']); } add_shortcode('affl_name', 'affl_name_shortcode'); /** * [affl_price id="123"] */ function affl_price_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_price'); if (is_string($product_data)) { return $product_data; } return esc_html($product_data['price_currency'] . number_format_i18n($product_data['price'], 2)); } add_shortcode('affl_price', 'affl_price_shortcode'); /** * [affl_rating id="123"] */ function affl_rating_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_rating'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['rating'])) { return ''; } return AFFLProductService::get_rating_stars_html(floatval($product_data['rating'])); } add_shortcode('affl_rating', 'affl_rating_shortcode'); /** * [affl_description id="123"] */ function affl_description_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_description'); if (is_string($product_data)) { return $product_data; } return wp_kses_post($product_data['description']); } add_shortcode('affl_description', 'affl_description_shortcode'); /** * [affl_features id="123"] */ function affl_features_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_features'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['short_features'])) { return ''; } $items = AFFLProductService::get_list_items_as_array($product_data['short_features']); $output = ''; return $output; } add_shortcode('affl_features', 'affl_features_shortcode'); /** * [affl_pros id="123"] */ function affl_pros_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_pros'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['pros'])) { return ''; } $items = AFFLProductService::get_list_items_as_array($product_data['pros']); $output = ''; return $output; } add_shortcode('affl_pros', 'affl_pros_shortcode'); /** * [affl_cons id="123"] */ function affl_cons_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_cons'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['cons'])) { return ''; } $items = AFFLProductService::get_list_items_as_array($product_data['cons']); $output = ''; return $output; } add_shortcode('affl_cons', 'affl_cons_shortcode'); /** * [affl_category id="123"] */ function affl_category_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_category'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['category_names'])) { return ''; } return esc_html(implode(', ', $product_data['category_names'])); } add_shortcode('affl_category', 'affl_category_shortcode'); /** * [affl_marketplace id="123"] */ function affl_marketplace_shortcode($atts) { $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_marketplace'); if (is_string($product_data)) { return $product_data; } return esc_html($product_data['marketplace_name']); } add_shortcode('affl_marketplace', 'affl_marketplace_shortcode'); /** * [affl_image id="123" size="medium"] */ function affl_image_shortcode($atts) { $atts = shortcode_atts(array('id' => 0, 'size' => 'medium'), $atts); $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_image'); if (is_string($product_data)) { return $product_data; } $image_size = sanitize_text_field($atts['size']); $image_url = get_the_post_thumbnail_url($product_data['id'], $image_size) ?: AFFILILABS_DEFAULT_PRODUCT_IMAGE; return '' . esc_attr($product_data['name']) . ''; } add_shortcode('affl_image', 'affl_image_shortcode'); /** * [affl_button id="123" text="Buy Now" color="#0073aa" radius="8"] */ function affl_button_shortcode($atts) { $default_atts = array( 'id' => 0, 'text' => __('Check Product*', 'affililabs'), 'color' => '#0073aa', 'radius' => '8', 'text_color' => '#ffffff', ); $atts = shortcode_atts($default_atts, $atts); $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_button'); if (is_string($product_data)) { return $product_data; } if (empty($product_data['affiliate_link'])) { return ''; } $button_text = sanitize_text_field($atts['text']); $button_color = sanitize_hex_color($atts['color']) ?: '#0073aa'; $border_radius = intval($atts['radius']); $text_color = sanitize_hex_color($atts['text_color']) ?: '#ffffff'; return '' . esc_html($button_text) . ''; } add_shortcode('affl_button', 'affl_button_shortcode'); /** * [affl_criteria id="123"] * Outputs all criteria and their fields for the current product. */ function affl_criteria_shortcode($atts) { $default_atts = array( 'id' => 0, ); $atts = shortcode_atts($default_atts, $atts); $product_data = _affl_get_product_data_for_shortcode($atts, 'affl_criteria'); if (is_string($product_data)) { return $product_data; } $product_id = $product_data['id']; $all_criterion_values = get_post_meta($product_id, AFFILILABS_META_KEY_PRODUCT_CRITERION_VALUES, true); if (!is_array($all_criterion_values)) { $all_criterion_values = []; } return AFFLCriteriaService::render_product_criteria_html($all_criterion_values); } add_shortcode('affl_criteria', 'affl_criteria_shortcode');