✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Lägg till ett nästa slumpmässigt inlägg i WordPress sidmall med hjälp av SQL

2

Du kan ofta få råd om hur du kan förbättra SEO (Search Engine Optimization) genom att lägga till länkar till dina tidigare inlägg när du publicerar ett nytt inlägg. Detta hjälper till att öka trafiken och det fungerar på samma sätt som plugins som "Relative Posts", men bara enklare.

Alla wordpress-inlägg lagras i tabell t.ex. wp_posts och i denna tabell hittar du post_title, post_name och dessa kolumner är ganska enkla. Beroende på konfigurationerna av dina inläggswebbadresser kan du ha olika format av permalänkar som kan konfigureras i avsnittet Inställningar – Permanlänk.

Följande PHP-kod kan infogas i din sidmall, normalt single.php som är mallen för ett inlägg eller page.php för sidmall.

Ändra wp_posts därefter eftersom detta kan variera lite. SQL-frågan returnerar ett slumpmässigt inlägg där det exkluderar sidorna, eller menu_items, länkar etc. Och inläggets status ska publiceras vilket exkluderar utkastet. Gränsen 1 returnerar endast 1 inlägg. Så om du vill ha ett tidigare inlägg kan du överväga att ändra detta till limit 2.

Permalänken på min sida är baserad på post_name som är mer SEO-vänlig. Du kan väl anpassa detta. SQL-frågan kan också anpassas. Du kanske till exempel vill returnera relevanta inlägg istället för slumpmässiga inlägg genom att matcha titlevärdet enligt det aktuella inläggets titel. Eller om du verkligen vill returnera dess föregående eller nästa inlägg sorterat efter publiceringsdatum, kanske du vill använda fältet ‘post_id’.

Kommentarer

Yu – "Cool, random är riktigt trevligt. Det är också bättre att se till att den slumpmässiga är relaterad till det aktuella inlägget. Men detta brukar inte vara en stor fråga så länge bloggen är för en enskild genre.

Också beställningen av RAND() fungerar bra för tusentals poster. (vanligtvis fallet för en vanlig blogg). Men det kommer att bränna din databas om du har miljontals poster i samma tabell som matchar sökkriterierna."

Ja, SQL- ordningen efter rand() är lite knepig och långsam. Den måste hämta alla poster och sorteras slumpmässigt. Det anses vara låg effektivitet när storleken på bordet är medelstort eller stort. Du kanske vill använda följande knep för att få en slumpmässig post på ett snabbare sätt genom att använda funktionen rand() i 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());

SQL- gränsen orsaker anger offset och den andra parametern anger antalet poster som ska hämtas.

Bättre Random Record

Enligt ovanstående är ordningen efter rand() extremt ineffektiv om du har en mycket stor tabell eftersom för sorteringen (även om du bara vill ha ett objekt) kommer rand()- funktionen att anropas och det är vad vi inte gör. vilja. Vi kan förbättra ovanstående genom att använda två frågor, den första returnerar det totala antalet inlägg, och vi har en PHP slumpmässig funktion och får den slumpmässiga posten genom att använda limit – satsen.

Inspelningskälla: helloacm.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer