• 12-07-2023, 12:45:11
    #1
    Dostlar selam, bir sitem var wordpress tabanlı kutulara yazdığı metinleri veritabanında bir tabloya kaydediyor, her kaydettiği metin için bir sayfa oluşturuyor. Ancak aynı metin 2. kez yazıldığında veritabanına kaydetmiyor bunu yaptım. ancak 2.kez aynı isimde sayfa oluşturuyor.
    Örneğin kutuya "metin" yazdığımda veritabanındaki ilgili kısma "metin" içeriğini kaydediyor. Bunun için sayfa oluşturuyor.

    siteadi.com/metin/ şeklinde sayfa oluşuyor.
    siteadi.com/metin-2/şeklinde sayfa oluşmasını engellemek istiyorum kopya içerik olarak algılanıp spama düşecek yoksa.

    Nasıl yaparım?
  • 12-07-2023, 13:53:26
    #2
    fatbotter.com
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Dostlar selam, bir sitem var wordpress tabanlı kutulara yazdığı metinleri veritabanında bir tabloya kaydediyor, her kaydettiği metin için bir sayfa oluşturuyor. Ancak aynı metin 2. kez yazıldığında veritabanına kaydetmiyor bunu yaptım. ancak 2.kez aynı isimde sayfa oluşturuyor.
    Örneğin kutuya "metin" yazdığımda veritabanındaki ilgili kısma "metin" içeriğini kaydediyor. Bunun için sayfa oluşturuyor.

    siteadi.com/metin/ şeklinde sayfa oluşuyor.
    siteadi.com/metin-2/şeklinde sayfa oluşmasını engellemek istiyorum kopya içerik olarak algılanıp spama düşecek yoksa.

    Nasıl yaparım?
    Sayfanın oluşturulmadan önce kontrolü yapılması gerekiyor.
  • 12-07-2023, 13:55:50
    #3
    lookout adlı üyeden alıntı: mesajı görüntüle
    Sayfanın oluşturulmadan önce kontrolü yapılması gerekiyor.

    $translation_text = trim($translation->translated_text);
    
    // Generate initial post slug
    $post_slug = sanitize_title('Translation: ' . $translation_text);
    $post_slug = mb_substr($post_slug, 0, 50);
    
    // Check if a page with the same slug already exists
    $existing_page = get_page_by_path($post_slug);
    
    // If a page with the same slug exists, do not create a new page
    if ($existing_page) {
        return;
    }
                
                // Split translation text into words
                $words = explode(' ', $translation_text);
                
                // Get the first 5 words or less for the title
                $title_words = array_slice($words, 0, 5);
                $post_title = implode(' ', $title_words);
    
                // Limit title to maximum 45 characters
                $post_title = mb_substr($post_title, 0, 45);
                
                $tags = array();
                
                // Calculate the remaining characters for tags
                $remaining_chars = 50;
                
                // Determine the tag words based on the remaining characters and word count
                foreach ($words as $word) {
                    if ($remaining_chars >= mb_strlen($word)) {
                        $tags[] = sanitize_title($word);
                        $remaining_chars -= mb_strlen($word) + 1; // Include space character
                    } else {
                        break;
                    }
                }

    Şöyle bir kontrol işlemi var aslında, ama gece yatıyorum sabah kalkıyorum mükerrer sayfalar oluşmuş oluyor. neye göre tetiklendiğini de anlamadım. önbellek sorunu vs vardır diye optimizasyon eklentisini de kaldırdım sorun devam ediyor
  • 12-07-2023, 14:00:47
    #4
    muhtemelen $existing_page kısmı kaçırıyor.

    tavsiyem $wpdb ile query oluşturup bu şekilde kontrol etmeniz daha net sonuç bırakacaktır.

    https://developer.wordpress.org/refe...b/get_results/
  • 12-07-2023, 14:07:31
    #5
    _PatroN_ adlı üyeden alıntı: mesajı görüntüle
    muhtemelen $existing_page kısmı kaçırıyor.

    tavsiyem $wpdb ile query oluşturup bu şekilde kontrol etmeniz daha net sonuç bırakacaktır.

    https://developer.wordpress.org/refe...b/get_results/
    denedim şimdi bakalım umarım çözülmüştür çok teşekkür ederim
    • _PatroN_
    _PatroN_ bunu beğendi.
    1 kişi bunu beğendi.
  • 12-07-2023, 14:08:40
    #6
    Developer
    post_exists fonksiyonunu da kullanabilirsiniz;

    $translation_text = trim($translation->translated_text);
     
    // Split translation text into words
    $words = explode(' ', $translation_text);
     
    // Get the first 5 words or less for the title
    $title_words = array_slice($words, 0, 5);
    $post_title = implode(' ', $title_words);
    
    // Limit title to maximum 45 characters
    $post_title = mb_substr($post_title, 0, 45);
    
    if (post_exists($post_title)){
        return false;
    }
     
    $tags = array();
     
    // Calculate the remaining characters for tags
    $remaining_chars = 50;
     
    // Determine the tag words based on the remaining characters and word count
    foreach ($words as $word) {
        if ($remaining_chars >= mb_strlen($word)) {
            $tags[] = sanitize_title($word);
            $remaining_chars -= mb_strlen($word) + 1; // Include space character
        } else {
            break;
        }
    }
  • 12-07-2023, 14:10:29
    #7
    brown adlı üyeden alıntı: mesajı görüntüle
    post_exists fonksiyonunu da kullanabilirsiniz;

    $translation_text = trim($translation->translated_text);
     
    // Split translation text into words
    $words = explode(' ', $translation_text);
     
    // Get the first 5 words or less for the title
    $title_words = array_slice($words, 0, 5);
    $post_title = implode(' ', $title_words);
    
    // Limit title to maximum 45 characters
    $post_title = mb_substr($post_title, 0, 45);
    
    if (post_exists($post_title)){
        return false;
    }
     
    $tags = array();
     
    // Calculate the remaining characters for tags
    $remaining_chars = 50;
     
    // Determine the tag words based on the remaining characters and word count
    foreach ($words as $word) {
        if ($remaining_chars >= mb_strlen($word)) {
            $tags[] = sanitize_title($word);
            $remaining_chars -= mb_strlen($word) + 1; // Include space character
        } else {
            break;
        }
    }

    Hocam çok teşekkür ederim elinize sağlık çözülmezse bunu deneyeceğim
  • 12-07-2023, 14:13:16
    #8
    Bu arada ; https://developer.wordpress.org/refe...s/post_exists/ posts_exists 'de benzer mantıkla çalışıyor.

    Eğer sql sorgunuz wp db ile sorunsuz ise, aynı sonucu alırsınız, kolay gelsin.
  • 12-07-2023, 14:18:30
    #9
    _PatroN_ adlı üyeden alıntı: mesajı görüntüle
    Bu arada ; https://developer.wordpress.org/refe...s/post_exists/ posts_exists 'de benzer mantıkla çalışıyor.

    Eğer sql sorgunuz wp db ile sorunsuz ise, aynı sonucu alırsınız, kolay gelsin.
    elinize sağlık çok teşekkür ederim hocam şu anlık çözüldü gibi gözüküyor yarına bakacağım umarım yeniden mükerrer oluşturmaz )
    • _PatroN_
    _PatroN_ bunu beğendi.
    1 kişi bunu beğendi.