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 title
wartość 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 .