class-studiou-wc-fpp-shortcode.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. if (!defined('WPINC')) {
  3. die;
  4. }
  5. class Studiou_WC_FPP_Shortcode {
  6. public function __construct() {
  7. add_shortcode('studiou_free_photo_product', array($this, 'render_shortcode'));
  8. }
  9. public function render_shortcode($atts) {
  10. $atts = shortcode_atts(array(
  11. 'id' => 0,
  12. ), $atts, 'studiou_free_photo_product');
  13. $product_id = absint($atts['id']);
  14. if (!$product_id) {
  15. return '<p class="studiou-fpp-error">' . esc_html__('Product ID is required.', 'studiou-wc-free-photo-product') . '</p>';
  16. }
  17. $product = wc_get_product($product_id);
  18. if (!$product) {
  19. return '<p class="studiou-fpp-error">' . esc_html__('Product not found.', 'studiou-wc-free-photo-product') . '</p>';
  20. }
  21. if (!Studiou_WC_FPP_Product::is_fpp_product($product_id)) {
  22. return '<p class="studiou-fpp-error">' . esc_html__('This product does not support photo upload.', 'studiou-wc-free-photo-product') . '</p>';
  23. }
  24. if (!$product->is_type('variable')) {
  25. return '<p class="studiou-fpp-error">' . esc_html__('This product must be a variable product.', 'studiou-wc-free-photo-product') . '</p>';
  26. }
  27. // Enqueue assets
  28. wp_enqueue_style('studiou-wcfpp-frontend');
  29. wp_enqueue_script('studiou-wcfpp-frontend');
  30. // Get variations
  31. $variations = $product->get_available_variations();
  32. $attributes = $product->get_variation_attributes();
  33. $max_file_size = Studiou_WC_FPP_Product::get_product_max_file_size($product_id);
  34. ob_start();
  35. include STUDIOU_WCFPP_PLUGIN_DIR . 'views/frontend-product.php';
  36. return ob_get_clean();
  37. }
  38. }