Wordpress

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
No to co chci je asi blbost nicméně...na jednom svém agregátoru zpráv mám desítky tisíc postů a některé nejsou ani po 3-4 měsících indexované Googlem. Nejsou, nejsou...to už je jedno, ale jak je hromadně smáznout? Zabírají pouze místo. Vím, že budou pluginy na mazání postů dle data...ale dle indexace v Google? Asi blbost co?

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2135
Registrace: 13.09.2011
A proč se nechceš snažit, aby je google zaindexoval ? Podle sitemap je musí zaindexovat ne ?

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
no neindexuje a jsou tam některé i půl roku...třeba za to ani nestojí :-)

Fit
Uživatelský avatar
WD Trader: 5/5

Příspěvky: 480
Registrace: 30.09.2011
Pravděpodobně je neidexuje, protože je označuje za duplicitní. Respektive indexuje, ale nezařazuje do výsledků vyhledávání kvůli duplicitě. Jestli se jedná o agregátor, tak bych se tomu vůbec nedivil. Pokud jsem to teda dobře pochopil...

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
No však já se nedivím...je v pořádku, že to neindexuje...ale jak to efektivně vyhodit z databáze?

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2135
Registrace: 13.09.2011
Čistě teoreticky bys mohl projet url, které ti google indexuje a ty v db ponechat a ostatní smazat, nicméně by si mohl přijít o spoustu stránek, které by google mohl zaindexovat později. Zeptám se jinak, proč ti ty stránky vadí v db ? Velikost ? Rychlost ?

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
Velikost databáze....to je jediný problém.....proto chci mazat stránky starší třeba půl roku, které nejsou indexované v googlu...jako bavíme se pochopitelně o množstvích až třeba půl milionů postů....Ručně to pochopitelně nejde :-)

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2135
Registrace: 13.09.2011
Chapu, tak vytahnout z db url clanku starsich pul roku a udělat crawlera na google vyhledavani site:domena.tld a protridit to, nicmene ti pak hrozi ip ban na vyhledavani pres tyhle scripty apod.

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
Dobře a co ještě jinak? Jak smazat přímo z databáze posty, které mají méně než třeba 50 znaků a jsou starší 60 dnů? Počítá se do délky postu i nadpis?
našel jsem:
SELECT * FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 30

To delete all the posts, you can replace SELECT * FROM with DELETE FROM — but make sure you take a backup before you do this!

Ale jak tam zahrnout délku postu? Jak je to s tím nadpisem?

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Neznám přesnou strukturu tabulky wp_posts, ale měl by tam být sloupeček třeba: post_subject, kde by byl název. Pak se do počtu znaků nepočítá nadpis.

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
No ja neznám ani to...ale asi je to řešitelné, kamarádi jsem rád, že mi pomáháte...i když asi občas lezu na nervy...

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Na Googlu je omezení 100 požadavků/den.

500 000 / 100 = 5000 dnů což je pro představu něco přes 13 let...

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Samozřejmě, neočekávám, že si bude kupovat za 5$/1000rq. Předpokládám, že ten projekt nevydělává dost na to, aby bylo výhodné si pořídit dodatečné požadavky.

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
Co je tady špatně?
SELECT *
FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF( NOW( ) , `post_date` ) >350
AND LENGTH( `post_content` ) <50

Mělo by to identifikovat posty starší 350 dní a kratší 50 znaků...ale nejede to...nějaký nápad?

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Promiň za pozdní odpověď, všiml jsem si příspěvku až teď.

Zkus tohle:
Kód: Vybrat vše
SELECT * FROM `wp_posts`
WHERE `post_type` = `post` AND DATETIME(`post_date`) <= (`2012-01-01 10:10:10`) AND LENGTH(`post_content`) < 50


Kdyžtak napiš, zda to vrací hodnoty nebo to nevrátilo nic. Kdyby to nevrátilo nic, zkus tento dotaz. Pokud druhý dotaz vrátí hodnoty, chyba bude v té podmínce datetime. Tu funkci nepoužívám.

Kód: Vybrat vše
SELECT * FROM `wp_posts`
WHERE `post_type` = `post` AND LENGTH(`post_content`) < 50 LIMIT 100

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
Jo díky Otakare, ptal jsem se ten den na zahraničních forech...jenom mi tam poradili místo LENGHT dát CHAR_LENGHT....Každopádně to co píšeš, je správně zřejmě taky, s tím že zadáváš konkrétní datum.

Ještě mě napadá Otakare, šlo by pomocí SQL příkazu smazat např. posty, kde se vyskytují 4 a více odkazy (URL). Díky Petr

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Určitě to nějak půjde, ale nikdy jsem tohle neřešil.
To ale asi přes SQL neuděláš, ale přes php by to vypadalo asi takto:
Kód: Vybrat vše
$sql = 'SELECT * FROM `wp_posts`
WHERE `post_type` = `post` AND DATETIME(`post_date`) <= (`2012-01-01 10:10:10`) AND LENGTH(`post_content`) < 50';
$result = mysql_query($sql);
while($row = mysql_fetchrow($result)) {
  if(substr_count($row['post_content'], 'http://') > 4) {
     $sql = 'DELETE FROM wp_posts WHERE post_id = ' . $row['post_id'];
     mysql_query($sql);
  }
}

sikec
WD Trader: 4.5/5

Příspěvky: 743
Registrace: 15.07.2011
Děkuji moc OTO, zkusím to nějak použít...Petr

Pro plnohodnotné využívání fóra, vč. psaní příspěvků se musíte registrovat nebo se přihlásit.
Registrovat se nebo Přihlásit se