Podpora » Pomoc a podpora » WordPress+CF7 – výsledek shortcodu – v mailu OK, jinde špatně

  • Ahoj, pokusam sa zobrazit vysledok vlastneho shortcodu na stranke anebo v samotne forme CF7, ale vzdy sa zobrazi vysledok shortcodu pred zadanim udajov do CF7, ale do mailu pride spravny vysledok po zadani udajov do CF7.

    <?php
    
    add_filter( 'wpcf7_form_elements', 'do_shortcode' );
    
    function cena_cf7_func() {
            $wpcf7 = WPCF7_ContactForm::get_current();
            $wpcf7data = WPCF7_Submission::get_instance();
            if ($wpcf7data) {
                    $formData = $wpcf7data->get_posted_data();
            }
    
        $pocetStran = $formData['pocetStran'];
        $rokVyrobenia = $formData['rokVyrobenia'];
        $pocetkusov = $formData['pocetkusov'];
    
    if ($pocetkusov === "žiadny" || $pocetkusov === "1 kus") {
      $zlava = 0;
    } elseif ($pocetkusov === "2 kusy" or $pocetkusov === "3 kusy") {
      $zlava = -5;
    } else {
      $zlava = -10;
    }
    
    $vekVyrobku = date("Y") - $rokVyrobenia;
    
    if ($vekVyrobku >= "51") {
        if ($pocetStran <= "59") {
          $sadzba = "92";
      } elseif ($pocetStran >= "60" and $pocetStran <= "69") {
          $sadzba = "95";
      } elseif ($pocetStran >= "70" and $pocetStran <= "79") {
          $sadzba = "98";
      } elseif ($pocetStran >= "80" and $pocetStran <= "89") {
          $sadzba = "103";
      } elseif ($pocetStran >= "90" and $pocetStran <= "99") {
          $sadzba = "107";
      } elseif ($pocetStran >= "100" and $pocetStran <= "120") {
          $sadzba = "112";
      } elseif ($pocetStran >= "121" and $pocetStran <= "140") {
          $sadzba = "119";
      } elseif ($pocetStran >= "141") {
          $sadzba = "125";
      }
      }
    
    $jedno = ($zlava) / 100;
    $jedno_procento = 1 + ($jedno);
    $cenaVyrobku = $sadzba * $jedno_procento;
    $vysledna_cenaVyrobku = number_format($cenaVyrobku, 2);
    
            return "Výsledná cena: " . "$vysledna_cenaVyrobku" . " €";
    }
    add_shortcode('cena', 'pzp_cf7_func');
    
    add_filter('wpcf7_mail_components', 'do_shortcode_mail', 10, 3);
    function do_shortcode_mail( $components, $contactForm, $mailComponent ){
      if( isset($components['body']) ){
        $components['body'] = do_shortcode($components['body']);
      }
      return $components;
    }

    Do formy, na stranku i do mailu zadavam [cena]
    Co je treba zmenit? Alebo dodat? Dekujem.

  • Ak chcete odpovedať na túto tému, musíte byť prihlásený.