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?
Wordpress aynı isimde sayfa oluşumunu engellemek/ nasıl yapılır?
9
●246
- 12-07-2023, 13:53:26Sayfanın oluşturulmadan önce kontrolü yapılması gerekiyor.Misafir adlı üyeden alıntı: mesajı görüntüle
- 12-07-2023, 13:55:50lookout adlı üyeden alıntı: mesajı görüntüle
$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:47muhtemelen $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:31denedim şimdi bakalım umarım çözülmüştür çok teşekkür ederim_PatroN_ adlı üyeden alıntı: mesajı görüntüle
- 12-07-2023, 14:08:40post_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:29brown adlı üyeden alıntı: mesajı görüntüle
Hocam çok teşekkür ederim elinize sağlık çözülmezse bunu deneyeceğim - 12-07-2023, 14:13:16Bu 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:30elinize 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_ adlı üyeden alıntı: mesajı görüntüle
)
)