✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Dodaj następny losowy post w szablonie strony WordPress za pomocą SQL

4

Często możesz uzyskać porady dotyczące poprawy SEO (optymalizacji wyszukiwarek), dodając linki do poprzednich postów podczas publikowania nowego posta. Pomaga to zwiększyć ruch i działa podobnie do wtyczek takich jak „Względne posty", ale tylko prostsze.

Wszystkie posty wordpress są przechowywane w tabeli, np . wp_posts, a wewnątrz tej tabeli znajdziesz post_title, post_name i te kolumny są dość proste. W zależności od konfiguracji adresów URL postów, możesz mieć różne formaty permalinków, które można skonfigurować w sekcji Ustawienia – Permanlink.

Poniższy kod PHP można wstawić do szablonu strony, zwykle single.php, który jest szablonem pojedynczego posta lub page.php dla szablonu strony.

Zmień odpowiednio wp_posts, ponieważ może się to nieco różnić. Zapytanie SQL zwraca losowy post, w którym wyklucza strony lub pozycje menu, linki itp. Status postu powinien zostać opublikowany, co wyklucza wersję roboczą. Limit 1 zwraca tylko 1 post. Więc jeśli chcesz mieć poprzedni post, możesz rozważyć zmianę tego na limit 2.

Permalink na mojej stronie jest oparty na nazwie post_name, która jest bardziej przyjazna dla SEO. Możesz to dostosować. Zapytanie SQL można również dostosować. Na przykład możesz chcieć zwrócić odpowiednie posty zamiast losowych postów, dopasowując titlewartość zgodnie z bieżącym tytułem posta. Lub naprawdę chcesz zwrócić poprzedni lub następny post posortowany według daty publikacji, możesz użyć pola „post_id”.

Uwagi

Yu – „Fajnie, losowość jest naprawdę fajna. Lepiej też upewnij się, że losowy jest powiązany z aktualnym postem. Ale zazwyczaj nie jest to duży problem, o ile blog dotyczy jednego gatunku.

Również kolejność według RAND() działa dobrze dla tysięcy rekordów. (zwykle w przypadku zwykłego bloga). Ale spali twoją bazę danych, jeśli masz miliony rekordów w tej samej tabeli, które spełniają kryteria wyszukiwania”.

Tak, kolejność SQL przez rand() jest trochę trudna i powolna. Musi pobrać wszystkie rekordy i posortować je losowo. Uważa się, że wydajność jest niska, gdy rozmiar stołu jest średni lub duży. Możesz użyć następującej sztuczki, aby szybciej uzyskać losowy rekord, używając funkcji rand() w PHP.

// get total number of records $query = "select count(1) from `table`"; $result = mysql_query($query) or die(mysql_error()); $total = mysql_result($result, 0, 0); // get a random $r = rand(0, $total - 1); // return a number between 0 and $total - 1 inclusive using PHP $query = "select * from `table` limit $r, 1"; $result = mysql_query($query) or die(mysql_error());

Limit powoduje, że SQL określa przesunięcie, a drugi parametr określa liczbę rekordów do pobrania.

Lepszy zapis losowy

Zgodnie z powyższym, kolejność według rand() jest wyjątkowo nieefektywna, jeśli masz bardzo dużą tabelę, ponieważ do sortowania (nawet jeśli chcesz tylko jednego elementu) funkcja rand() zostanie wywołana, a tego nie robimy chcieć. Możemy to poprawić, używając dwóch zapytań, pierwsze zwraca całkowitą liczbę postów, a my mamy funkcję random PHP i uzyskujemy losowy rekord za pomocą instrukcji limit .

Źródło nagrywania: helloacm.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów