• 24-10-2024, 11:06:34
    #1
    Merhaba, ufak bir düzenleme ihtiyacım var;

    Kısaca isteğimin detayını anlatayım;

    ÖRNEK SİTE

    1) Burada yer alan Sitene Ekle Kısmı (Shourtcode.php) tarafından oluşturuluyor ve kodu paylaşıyor. Fakat verilen kod textarea içerisinde olmadığı için irame arka planda yükleniyor. Tema yapımcısı da bunu gizleyerek çözüm üretmiş.


    none etiketini kaldırdığınızda iframe formun yüklendiğini göreceksiniz.





    Bu durumda sayfa hızına etki ediyor.

    İSTEDİĞİM durum ise;

    En stabil şekilde (ek kütüphane kullanmadan) SİTENE EKLE butonu tıkladığında js kodlama le veya modal çalışır mı bilmiyorum. Popup açılacak ve alt resim de yer alan textarea şeklinde kodu üretecek;


    detaylı şekilde yazdım sorunun çözülmesi için. (İşi bilen için ufak bir düzenleme ilgilenenler özelden tekliflerini yazabilir.

    function pexpe_add_site($atts, $content = null) {
      extract(shortcode_atts(array(
        'src' => '',
        'style' => '',
      ), $atts));
        
      $ihbar = '';
      $page_id = pexpe_page_id_for_lang(pexpe_get_option('contact-page'));
      if( !empty($page_id) ) {
        $ihbar = '<a class="pexpe-ihbar" href="'.esc_url(get_page_link( $page_id)).'">'.esc_html__( 'Hata Bildir', 'pexpe' ).'</a>';
      }
    
        $out = '<div class="pexpe-add-site hidden-mobile">
      <div class="hidden-mobile">'.sprintf(__('%s Aracı’nı kendi web sitenize eklemek ister misiniz?', 'pexpe'), get_the_title()).' '.do_shortcode($content). '</div>
      <div class="pexpe-add-site-buttons">
        <div id="pexpe-copy-code2"><iframe id="pexpe" src="'.$src.'" style="'.$style.'" scrolling="no"></iframe><script>let iframe=document.getElementById("pexpe");window.addEventListener(\'message\',function(e){let message=e.data;iframe.style.height=message.height+20+"px";},false);</script></div>
       <div id="pexpe-copy-code">'.esc_html__( 'Sitene Ekle', 'pexpe' ).'</div>
        <div class="pexpe-native-share">'.esc_html__( 'Paylaş', 'pexpe' ).'</div>
        '.$ihbar.'
    
      </div>
      </div>';
        return $out.pexpe_entry_related_articles();
    }
    Kod bu şekildedir.
    Teşekkürler
  • 24-10-2024, 11:11:33
    #2
    Foxi adlı üyeden alıntı: mesajı görüntüle
    Merhaba, ufak bir düzenleme ihtiyacım var;

    Kısaca isteğimin detayını anlatayım;

    ÖRNEK SİTE

    1) Burada yer alan Sitene Ekle Kısmı (Shourtcode.php) tarafından oluşturuluyor ve kodu paylaşıyor. Fakat verilen kod textarea içerisinde olmadığı için irame arka planda yükleniyor. Tema yapımcısı da bunu gizleyerek çözüm üretmiş.


    none etiketini kaldırdığınızda iframe formun yüklendiğini göreceksiniz.





    Bu durumda sayfa hızına etki ediyor.

    İSTEDİĞİM durum ise;

    En stabil şekilde (ek kütüphane kullanmadan) SİTENE EKLE butonu tıkladığında js kodlama le veya modal çalışır mı bilmiyorum. Popup açılacak ve alt resim de yer alan textarea şeklinde kodu üretecek;


    detaylı şekilde yazdım sorunun çözülmesi için. (İşi bilen için ufak bir düzenleme ilgilenenler özelden tekliflerini yazabilir.

    function pexpe_add_site($atts, $content = null) {
      extract(shortcode_atts(array(
        'src' => '',
        'style' => '',
      ), $atts));
        
      $ihbar = '';
      $page_id = pexpe_page_id_for_lang(pexpe_get_option('contact-page'));
      if( !empty($page_id) ) {
        $ihbar = '<a class="pexpe-ihbar" href="'.esc_url(get_page_link( $page_id)).'">'.esc_html__( 'Hata Bildir', 'pexpe' ).'</a>';
      }
    
        $out = '<div class="pexpe-add-site hidden-mobile">
      <div class="hidden-mobile">'.sprintf(__('%s Aracı’nı kendi web sitenize eklemek ister misiniz?', 'pexpe'), get_the_title()).' '.do_shortcode($content). '</div>
      <div class="pexpe-add-site-buttons">
        [B]<div id="pexpe-copy-code2"><iframe id="pexpe" src="'.$src.'" style="'.$style.'" scrolling="no"></iframe><script>let iframe=document.getElementById("pexpe");window.addEventListener(\'message\',function(e){let message=e.data;iframe.style.height=message.height+20+"px";},false);</script></div>[/B]
    [B]    <div id="pexpe-copy-code">'.esc_html__( 'Sitene Ekle', 'pexpe' ).'</div>[/B]
        <div class="pexpe-native-share">'.esc_html__( 'Paylaş', 'pexpe' ).'</div>
        '.$ihbar.'
    
      </div>
      </div>';
        return $out.pexpe_entry_related_articles();
    }
    Kod bu şekildedir.
    Teşekkürler
    İmzadan ulaşın hocam
  • 24-10-2024, 11:17:10
    #3
    function pexpe_add_site($atts, $content = null) {
        // 'src' ve 'style' parametrelerini doğrudan kullan
        $src = isset($atts['src']) ? esc_url($atts['src']) : '';
        $style = isset($atts['style']) ? esc_attr($atts['style']) : '';
        
        // İhbar linkini sadece sayfa id'si mevcutsa oluştur
        $ihbar = '';
        $page_id = pexpe_page_id_for_lang(pexpe_get_option('contact-page'));
        if (!empty($page_id)) {
            $ihbar = '<a class="pexpe-ihbar" href="' . esc_url(get_page_link($page_id)) . '">' . esc_html__('Hata Bildir', 'pexpe') . '</a>';
        }
    
        // Çıktı HTML kodunu oluştur
        $out = '<div class="pexpe-add-site hidden-mobile">
                    <div class="hidden-mobile">' . sprintf(__('%s Aracı’nı kendi web sitenize eklemek ister misiniz?', 'pexpe'), get_the_title()) . ' ' . do_shortcode($content) . '</div>
                    <div class="pexpe-add-site-buttons">
                        <div id="pexpe-copy-code2">
                            <iframe id="pexpe" src="' . $src . '" style="' . $style . '" scrolling="no"></iframe>
                        </div>
                        <div id="pexpe-copy-code">' . esc_html__('Sitene Ekle', 'pexpe') . '</div>
                        <div class="pexpe-native-share">' . esc_html__('Paylaş', 'pexpe') . '</div>
                        ' . $ihbar . '
                    </div>
                </div>';
    
        // İlgili makaleler fonksiyonunu çağırma
        return $out . pexpe_entry_related_articles();
    }
    
    // Javascript kodu
    add_action('wp_footer', function() {
        ?>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                var iframe = document.getElementById('pexpe');
                if (iframe) {
                    window.addEventListener('message', function(e) {
                        if (e.data && e.data.height) {
                            iframe.style.height = (parseInt(e.data.height) + 20) + 'px';
                        }
                    }, false);
                }
            });
        </script>
        <?php
    });