Omezení délky příspěvku

Štítky: 

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.

Aktuálně je na stránce zobrazeno 20 příspěvků - 1. až 20. (z celkem 21)
  • Autor
    Příspěvky
  • #1337

    Marp
    Participant

    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 :(

    #10176

    neteyescz
    Participant

    Dobrý 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

    #10177

    Marp
    Participant

    No 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 ;)

    #10178

    admin
    Keymaster
    Web

    O ú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.

    #10179

    Marp
    Participant

    admin: 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.

    #10180

    neteyescz
    Participant

    Teda, 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š…

    #10181

    Marp
    Participant

    Ale vůbec ne ;)

    #10182

    admin
    Keymaster
    Web

    neteyescz: 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.

    #10183

    Marp
    Participant

    Abych 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/

    #10184

    litolka
    Participant

    Dobrý 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.

    #10185

    admin
    Keymaster
    Web

    Marp: 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?

    #10186

    litolka
    Participant

    Dobrý 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ěď.

    #10187

    admin
    Keymaster
    Web

    1) 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?

    #10188

    litolka
    Participant

    Ano, 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.

    #10189

    litolka
    Participant

    Tak 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.

    #10190

    litolka
    Participant

    Tak 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?

    #10191

    litolka
    Participant

    Právě jsem zjistila, že funkce vyhazuje i články, které mají bez problémů třeba 275 slov, nevím, čím to je.

    #10192

    neteyescz
    Participant

    A nechcete radši napsat pravidla přispívání a ty články, co je poruší, ručně mazat?

    #10193

    litolka
    Participant

    Pravidla jsou samozřejmě napsána, jenže mám cca. 8 webů a nejsem schopná je každý den kontrolovat.

    #10194

    admin
    Keymaster
    Web

    Postupně jsem se k tomuto tématu vracel a ještě než jsem stačil dodělat vlastní funkce, tak jsem našel plugin WyPiekacz, který je poměrně aktuální a měl by umět všechna možná omezení (dělky názvu, textu, počtu odkazů, atd). Vyzkoušejte a dejte prosím vědět…

Aktuálně je na stránce zobrazeno 20 příspěvků - 1. až 20. (z celkem 21)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti