Edit File: search.php
<?php /* Plugin Name: Dinamik Arama formu Description: Kullanıcıların arama formuna bir şey girdiğinde, bu bileşen blog yazılarını dinamik olarak döndürür. Version: 1.0 Author: [Oruno] */ class Dinamik_Arama_Blog_Yazilari_Bileseni extends WP_Widget { public function __construct() { parent::__construct( 'dinamik_arama_blog_yazilari_bileseni', 'Oruno - Arama Butonu', array( 'description' => 'Anasayfanıza dinamik çalışan bir arama butonu eklemenizi sağlayan modülümüz.' ) // Açıklama ); } public function widget( $args, $instance ) { echo $args['before_widget']; // Bileşen başlığı $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'temajet' ); ?> <style> #arama-sonuclari { width: 100%; margin-top: 5px; border-bottom: 1px solid #ccc; /* Tüm sonuçların altına border-bottom ekle */ padding-bottom: 5px; /* Tüm sonuçların altına padding-bottom ekle */ position: relative; z-index: 999; text-transform: uppercase; /* Tüm metinleri büyük harfe dönüştür */ } #arama-kutusu{ border-radius: 25px 25px; } #arama-sonuclari a { display: block; padding: 5px 0; /* Her bir sonuç öğesine padding-top ve padding-bottom ekle */ text-decoration: none; color: inherit; border-bottom: 1px solid #ccc; /* Her bir sonuç öğesinin altına border-bottom ekle */ } #arama-sonuclari a:hover { background-color: #f0f0f0; border-color: transparent; /* Üzerine gelindiğinde border rengini transparent yap */ } #arama-sonuclari a{ padding: 6px; border-bottom: 1px solid #e0e0e0; } .arama-kutusu-wrapper { position: relative; } .input-container { position: relative; display: flex; align-items: center; width: 100%; } #arama-kutusu { width: calc(100% - 40px); padding-right: 30px; } .searchs { position: absolute; top: 50%; right: 0; transform: translateY(-50%); } .searchs i { margin-left: 5px; margin-right: 12px; cursor: pointer; transition: transform 0.3s ease; } .searchs i:first-child:hover { transform: scale(1.2); color:var(--main-color); } .searchs i:last-child:hover { transform: rotate(45deg); color: red; } #form-wrapper { position: relative; } #form-wrapper img { position: relative; top: 0; bottom: 45px; left: 50%; width: 290px !important; transform: translateX(-50%); z-index: 999; margin-bottom: 28px; } #blog-arama-formu { z-index: 1000; /* Formun resmin üzerinde kalması için */ } @media(min-width:992px){ #form-wrapper{ padding: 60px 60px; margin-right: 230px; margin-left: 230px; } } @media only screen and (max-width: 600px) { #arama-kutusu::placeholder { font-size: 12px; /* İstenilen font boyutunu buraya yazabilirsiniz */ } #form-wrapper{ padding: 40px 0; } } </style> <?php // Arama formunu göster echo '<div id="form-wrapper">'; echo '<img src="' . esc_url( $instance['image_url'] ) . '" alt="Logo">'; // Başlık varsa ekrana yazdır if ( ! empty( $title ) ) { echo $args['before_title'] . apply_filters( 'widget_title', $title ) . $args['after_title']; } echo '<form id="blog-arama-formu" action="#" method="get">'; echo '<div class="arama-kutusu-wrapper">'; echo '<div class="input-container">'; echo '<input type="text" id="arama-kutusu" style="width: 100% !important;" placeholder="Aradığınız ilaç ya da etkin maddeyi buraya yazınız..." />'; echo '<div class="searchs">'; echo '<i class="fas fa-search"></i>'; echo '<i class="fas fa-times"></i>'; echo '</div>'; echo '</div>'; echo '</div>'; echo '<div id="arama-sonuclari" style="display: none;"></div>'; echo '</form>'; echo '</div>'; ?> <script> jQuery(document).ready(function($) { $('#arama-kutusu').on('input', function() { var kelime = $(this).val(); if (kelime.length > 2) { $.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'POST', data: { action: 'dinamik_arama_blog_yazilari', kelime: kelime }, success: function(response) { $('#arama-sonuclari').html(response).show(); } }); } else { $('#arama-sonuclari').hide(); } }); $('.searchs i:last-child').on('click', function() { $('#arama-kutusu').val(''); $('#arama-sonuclari').hide(); }); function aramaIslemi() { var kelime = $('#arama-kutusu').val(); if (kelime.length > 0) { var baseUrl = window.location.href.split('?')[0]; window.location.href = baseUrl + '?s=' + encodeURIComponent(kelime); } } $('.searchs i:first-child').on('click', function() { aramaIslemi(); }); $(document).on('change', '#arama-sonuclari', function() { var url = $(this).val(); if (url !== '') { window.location.href = url; } }); }); </script> <?php echo $args['after_widget']; } public function form( $instance ) { // Varsayılan başlık $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'temajet' ); // Varsayılan resim URL'si $image_url = ! empty( $instance['image_url'] ) ? $instance['image_url'] : esc_url('', 'temajet' ); ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Başlık:', 'temajet' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"> </p> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'image_url' ) ); ?>"><?php esc_attr_e( 'Resim URL\'si: (Lütfen url\'in başından "-" işaretini kaldırınız.)', 'temajet' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'image_url' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'image_url' ) ); ?>" type="text" value="<?php echo esc_url( $image_url ); ?>"> <input type="button" class="button button-primary js-widget-media-upload" value="<?php esc_attr_e( 'Resim Seç', 'temajet' ); ?>" /> </p> <script> // Media uploader için jQuery jQuery(document).ready(function($){ // Resim yükleme butonuna tıklandığında $('.js-widget-media-upload').on('click', function(e) { e.preventDefault(); var button = $(this), custom_uploader = wp.media({ title: 'Resim Seçin', library: { // Sadece resimlerin görüntülenmesi type: 'image' }, button: { // Medya kütüphanesinde resim seçme butonunun metni text: 'Resim Seç' }, multiple: false // Sadece tek bir resim seçilecek }).on('select', function() { // Seçildiğinde var attachment = custom_uploader.state().get('selection').first().toJSON(); var imageUrl = attachment.url; if (imageUrl !== '') { imageUrl = '-' + imageUrl; // URL doluysa başına "-" ekle } button.prev('input[type="text"]').val(imageUrl); // Resim URL'sini al ve input alanına yerleştir }).open(); }); }); </script> <?php } public function update( $new_instance, $old_instance ) { // Form alanının güncellenmesi $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; $instance['image_url'] = ( ! empty( $new_instance['image_url'] ) ) ? esc_url_raw( $new_instance['image_url'] ) : 'https://upload.wikimedia.org/wikipedia/commons/3/3d/Google_logo_and_Chrome_wordmark.svg'; return $instance; } } function register_dinamik_arama_blog_yazilari_bileseni() { register_widget( 'Dinamik_Arama_Blog_Yazilari_Bileseni' ); } add_action( 'widgets_init', 'register_dinamik_arama_blog_yazilari_bileseni' ); // Ajax isteğini işle add_action('wp_ajax_dinamik_arama_blog_yazilari', 'dinamik_arama_blog_yazilari_callback'); add_action('wp_ajax_nopriv_dinamik_arama_blog_yazilari', 'dinamik_arama_blog_yazilari_callback'); function dinamik_arama_blog_yazilari_callback() { $kelime = sanitize_text_field($_POST['kelime']); // Arama sonuçlarını al $arama_sonuclari = new WP_Query(array( 's' => $kelime, 'post_type' => 'post', 'posts_per_page' => -1 )); // Sonuçları ekrana yazdır if ($arama_sonuclari->have_posts()) { while ($arama_sonuclari->have_posts()) { $arama_sonuclari->the_post(); echo '<a rel="nofollow" href="'. get_permalink() .'">'. get_the_title() .'</a>'; } } else { echo '<option value="">Sonuç bulunamadı</option>'; } wp_reset_postdata(); die(); } ?>