Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Omezení délky příspěvku
Štítky: omezeni
Zvolené téma neobsahuje zatím 2žádnou odpověď. Do diskuze (5 účastníků) se naposledy zapojil uživatel Lukenzi a poslední změna je stará 12 let.
-
AutorPříspěvky
-
7. ledna 2012 (21:47) #1337
Potřebuji pro nový web, kde budou mít registrovaní návštěvníci funkci autorů – vkládání příspěvků a fotografií, nastavit maximální délku příspěvku na cca 600-750 znaků – pár vět, souvětí, popis. Dále možnost vložit maximálně jednu fotografii denně na autora. Hledám, hledám, nenacházím :(
8. ledna 2012 (9:20) #10176Dobrý den,
To tedy opravdu nevím, jak by se to dalo vypracovat přímo na WP. Plugin s takovou funkcí neexistuje, jediné, co je možné, je v databázi post_content omezit velikost příspěvku, ale to se omezí i Vám. Nebylo by lepší každému dát odsouhlasit podmínky, kde by jste napsal to, co tady a kdyby je někdo nedodržel, vykopl by jste ho?
Neteyes.cz
8. ledna 2012 (11:49) #10177No právě, se to zkrátí i mě, což zase na druhou stranu nechci. V podmínkách webu samozřejmě toto bude a beztak budu de facto mít možnost jakýkoliv post schválit či neschválit, ale abych zase pak jen neseděl celej den u počítače a neselektoval :-)
Ale díky Neteyesi!
PS: Máš hezkej a zajímavej web ;)
8. ledna 2012 (15:19) #10178O úpravě databáze (nebo zdrojových souborů WordPressu) opravdu nedoporučuju nikomu ani přemýšlet :-)
1) Omezení délky příspěvků není zase tolik složité, existuje i více způsobů. Asi nejjednodušší je použít maximálního limitu délky textu v podobě počtu slov, který se už v editoru automaticky zobrazuje. Stačí pak do souboru functions.php (nebo vytvořit vlastní plugin) vložit následující kód:
function separatista_omezeni_delky_textu( $content )
{
global $post;
$content = $post->post_content;
if ( current_user_can( 'author' ) ) {
if ( str_word_count( $content ) >= 200 ) {
wp_die( 'CHYBA: Překročili jste maximální počet slov.' );
}
}
}
add_action( 'publish_post', 'separatista_omezeni_delky_textu' );Je to asi nejlepší řešení, uživatelé vidí v editoru kolik už napsali slov a když ho přesáhnou a chtějí příspěvek publikovat, tak se jim objeví chybová hláška (vše ale zůstane zachováno a mohou to upravit a zkusit uložit znovu). Jde to samozřejmě celé udělat i na přesný počet znaků, ale v tomto případě neuvidí aktuálně napsaný počet. Zcela ideální by sice bylo, aby nešlo po překročení limitu do editoru vůbec psát, ale tam už by se musela napsat funkce, která by použila nějaký JavaScriptový plugin pro TinyMCE, který to omezení umí aplikovat na pole editoru.
Poznámky:
– Hodnotu maximálního počtu 200 slov je možné samozřejmě měnit (konkrétní znění chybové hlášky také).
– Omezení by se mělo vztahovat pouze na Redaktory (anglicky Author).
– Nebyl čas to vyzkoušet, takže je to pouze narychlo sepsáno, vyzkoušejte a dejte prosím vědět…
Ad 2) Teoreticky by to mělo jít, zkusím se na to ještě podívat.
8. ledna 2012 (15:51) #10179admin: díky, díky a ještě jednou díky!!! To je ono, vyzkoušeno!!! Funguje a těch 200 slov je ideální počet – zkusil jsem to pod “redaktorem”. Jako administrátor tu délku omezenou nemám.
8. ledna 2012 (16:20) #10180Teda, hluboce se omlouvám, moje znalosti ještě nejsou takové, jako separatisty.
A samozřejmě palec nahoru Separatistovi!!!
Marp: Díky, snad na mě tou špatnou radou nezanevřeš…
8. ledna 2012 (16:49) #10181Ale vůbec ne ;)
8. ledna 2012 (21:37) #10182neteyescz: Není to zase tak známý trik :-)
Marp: Výborně. Ten druhý úkol je sice trochu zapeklitý, i když reálný. V podstatě jde o to, kontrolovat nahrávané soubory ještě před jejich uložením a porovnávat, zda už aktuální uživatel dnes nahrál nějaký jiný obrázek. Zatím sem doplním zdroje k samostudiu (1, 2), které využívají potřebný filtr wp_handle_upload_prefilter pro jiné účely, ale na jeho základě by šlo poměrně jednoduše vytvořit i omezení na uživatele. Můžete to zatím vyzkoušet, pokud se nezadaří, tak se k tomu dostaneme až vyjde čeština pro WordPress 3.3.1.
9. ledna 2012 (8:14) #10183Abych nastínil konkrétněji, o co mi jde u těch fotek: Na všech svých webech používám pro fotogalerie plugin NextGEN Gallery, vyhovuje mi zcela. Chtěl bych pro každého autora založit vlastní galerii, kam by vkládal své fotografie a galerii by vložil do příslušné podstránky. Jenže autoři nemají do administrace NextGEN Gallery přístup. Stáhnul jsem proto rozšíření NGG Authors a NextGEN Public Uploader a nyní s tím laboruji. Ten Public Uploader se mi jeví jako výborný – lze nastavit, kdo může nahrávat fotografie. Takže ještě zbývá vyřešit to omezení, jak píše Separatista – kontrola, že autor nahrál v konkrétní den jen jednu fotografii…
Web v přípravné fázi je zde: http://kazdyden.net/
22. ledna 2012 (12:57) #10184Dobrý den,
já bych měla problém trošku spíše opačný. Potřebovala bych, aby mi na blogy nebyly vkládány krátké texty, tj. pod 900 znaků. Super by bylo, kdyby i WP dokázal kontrolovat zpětné odkazy vedoucí z článků, tak aby byly pouze 3, popř. duplicitu článku (shodný nadpis). Dokážete mi prosím poradit? Díky.
Napadlo mě, že by to šlo obráceně, tj. pozměnit
function separatista_omezeni_delky_textu( $content )
{
global $post;
$content = $post->post_content;
if ( current_user_can( ‘author’ ) ) {
if ( str_word_count( $content ) <= 900 ) {
wp_die( ‘CHYBA: Článek není dostatečně dlouhý.’ );
}
}
}
add_action( ‘publish_post’, ‘separatista_omezeni_delky_textu’ );
ale to je bohužel chybně anebo jej špatně vkládám do functions.php.
22. ledna 2012 (13:11) #10185Marp: Pokud jde o tento způsob řešení (využití pluginu NextGEN Gallery), tak už se tady také objevil. Bohužel myslím, že to skončilo na faktu, že k nahrávaným obrázkům není ukládán jejich autor, takže pak nelze ani vyřešit následný výpis. Bez NextGEN Gallery by to ale šlo, možná i s ní, ale zatím jsem to blíže nezkoumal… Pokud ale máte nějaké zkušenosti, tak sem s nimi…
litolka: Uživatelé se mohou přihlásit do administrace a nechcete, aby mohli ukládat příliš krátké články? Potom stačí změnit řádek:
if ( str_word_count( $content ) >= 200 ) {
např. na 250 slov (odhadem 900 znaků) a změnit znaménka:
if ( str_word_count( $content ) <= 250 ) {
A samozřejmě i změnit text s chybou, kterou jim to bude hlásit :-)
Zkuste prosím ještě upřesnit druhý bod. Nejdříve chcete aby nemohl být zadaný název článku duplicitní a potom nesmí být v článku více než tři externí odkazy? Jde o nějaký web s PR články?
23. ledna 2012 (9:19) #10186Dobrý den,
děkuji admin za zprávu. Přesně takto jsem to udělala (viz. zpráva k příspěvku výše), ovšem zřejmě jsem jej chybně vložila do souboru functions.php. Kam mám tento HTML kod přesně vložit? Zadala jsem jej hned na začátek, ale poté jsem se již nemohla přihlásit do adminu. Házelo to chybu.
Jinak upřesnění: ano, jde o několik webů s PR články (např. przpravy.com). Primárně mi jde o to, aby články, které jsou na tyto PR weby umísťovány, splňovaly 3 základní body:
1) délka článku min. 900 znaků (to řešíme výše pomocí HMTL kodu)
2) aby články neobsahovaly více, jak 3 hypertextové odkazy
3) aby název článku nebyl duplicitní s jiným článkem – kontrola názvu (např. vím, že pokud je název článku stejný, tak se za URL adresou zobrazí 2, popř.3 atd v závislosti na tom, kolikrát se stejný název v systému již vyskytuje). Nevím ale, zda je tato skutečnost technicky možná, proto mi jde primárně především o první dva body.
Moc děkuji za odpověď.
23. ledna 2012 (11:42) #101871) Kód se vkládá do souboru functions.php, tam by neměl být problém. Píše to nějakou chybu nebo jak víte, že to nefunguje? Upozornění: Zadaná hodnota není pro počet znaků, ale počet slov, takže tam zadejte číslo cca kolem 250, abyste to mohla vyzkoušet. Pokud tam máte hodnotu 900 slov, tak musíte vložit text dlouhý alespoň 3000 znaků, aby se omezení aplikovalo. Můžeme to upravit i na počet znaků, ale bude asi třeba nějak ošetřit i HTML (odkazy, atd.)
2) Omezení na počet odkazů v textu by měl jít také provést, bude ale třeba dopsat funkci pro kontrolu obsahu a vyhledat v něm pomocí regulárního výrazu všechny odkazy. Možná existuje i nějaký plugin, zatím jsem to moc nezkoumal…
3) Ano, u stejných názvů je na konec URL přidávana rozlišovací číslice. A to vám stačí nebo nechcete vůbec stejné názvy?
23. ledna 2012 (14:29) #10188Ano, píše to chybu:
Fatal error : Call to undefined function add_action () linka 4507
Do souboru functions.php jsem doplnila:
function separatista_omezeni_delky_textu( $content )
{
global $post;
$content = $post->post_content;
if ( current_user_can( 'author' ) ) {
if ( str_word_count( $content ) <= 250 ) {
wp_die( 'CHYBA: Váš článek je příliš krátký.' );
}
}
}
add_action( 'publish_post', 'separatista_omezeni_delky_textu' );úplně dolů, ukončeno to bylo ?>
a vložila zpátky do: wp-includes – přepsala jsem functions.php
3) nechci vůbec stejný název.Nejde mi o URL, jde mi o duplicitu těch názvů jako takovou.
Děkuji moc za snahu.
25. ledna 2012 (18:17) #10189Tak super, problém s kódem jsem vyřešila. Kod jsem vkládala do špatného functions.php přímo ve WordPress a nikoliv v šabloně, kde musel být změněn. Tento problém je tedy vyřešen, super, děkuji.
25. ledna 2012 (18:36) #10190Tak ještě jeden problém. Zjistila jsem, že funkce sice vydá hlášku, že článek je příliš krátký pro publikaci, ale nezamezí jeho fyzické publikaci. Článek zkrátka zůstane normálně na webu jako publikovaný. Pokud tedy dotyčný článek neupraví, tak se prakticky nic neděje. Co s tím? Jde to nějak vylepšit?
26. ledna 2012 (9:02) #10191Právě jsem zjistila, že funkce vyhazuje i články, které mají bez problémů třeba 275 slov, nevím, čím to je.
26. ledna 2012 (15:50) #10192A nechcete radši napsat pravidla přispívání a ty články, co je poruší, ručně mazat?
27. ledna 2012 (12:16) #10193Pravidla jsou samozřejmě napsána, jenže mám cca. 8 webů a nejsem schopná je každý den kontrolovat.
10. dubna 2012 (12:53) #10194 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.