Wordpress - vylepšete si svůj redakční systém

 |  Tvorba WWW  |  5 179x
Wordpress - vylepšete si svůj redakční systém

I když už Wordpress nepoužívám, rozhodl jsem se, že zveřejním krátký článek a pár rad, jak si práci ve zmíněném redakčním systému usnadnit. Během deseti měsíců, kdy můj weblog poháněl Wordpress jsem zvládl přečíst spoustu řádků zdrojového kódu a našel odpovědi na některé otázky, které mě trápily. Jako první jsem řešil rychlost systému: jelikož webzdarma nepatří mezi nejrychlejší hostingy, můj prvotní průzkum funkcí směřoval právě tímto směrem. Připravil jsem si pro Vás pár jednoduchých návodů, jak WP znatelně zrychlit. A jelikož o mapu webu jsem se už podělil ve svém prvním článku na téma Wordpress, na konec přidám jen návod na lepší stránkování indexu.

Vše bylo testováno na Wordpressu 2.0.5 Anglické verzi. Před zásahem do kódu doporučuji soubory zazálohovat, stejně jako použít vždy raději komentář, nežli delete.

Funkce _e()

Funkce _e() má na starost přeložení argumentu do zadaného kódování a jeho následné vytisknutí. Předpokládám ale, že kódování jste si zvolili při instalaci systému a editaci Vašeho první skriptu. Já jsem ponechal implicitně nastavené UTF, a všechny soubory ukládal právě v tomto kódování. A protože nebyl důvod v budoucnu kódování měnit, překlad už nadále nebyl nutný. Řetězce tištěné funkcí _e() tedy můžete nahradit podle následujícího klíče:

<a href="http://wordpress.org/"><?php _e('Documentation'); ?></a>
<a href="http://wordpress.org/">Documentation</a>

Automatická náhrada řetězců

Druhý problém, který mi znepříjemňoval práci v administraci byla automatická náhrada řetězců, a to konkrétně při práci s HTML source editorem. Ten si doslova nahrazuje cokoli, co se mu zlíbí. Výsledkem je nafouknutí možných inline stylů, znemožnění používání některých formátovacích tagů a ukázek php kódu. Zkuste si napsat článek přímo v HTML source editoru s následujícími řádky a uvidíte kouzlo.

<p style="border: 1px solid black;"><b>zkouška</b></p>
<p><code><?php // nějaký php kód, který chci pouze zobrazit ?></code></p>

Na vyřešení svého problému jsem dlouho nemohl najít odpověď, než jsem narazil na diskusní fórum Česká poradna pro Wordpress, kde byly zodpovězeny všechny mé dotazy. Tímto bych chtěl také poděkovat moderátorům fóra za rychlé a věcné odpovědi.

Nejdříve v administraci vypneme TinyMCE a zakážeme automatickou opravu invalidního XHTML. Pak otevřeme soubor wp-includes/default-filters.php, najdeme následující řádky a zakomentujeme:

add_filter('the_content', 'convert_chars');
add_filter('the_content', 'wpautop'); 

Nyní už se nám zobrazí přesně to, co naťukáme do formuláře. Nevýhoda je ale odstranění všech automaticky doplněných odstavců, které musíme u starších článků manuálně doplnit.

Stránkování indexu

Neošetřené styly => nemožnost kliknout na odkaz v Opeře, zrcadlově převrácené odkazy vpřed / zpět a absence celkového počtu článků mě donutily k napsání vlastní funkce pro stránkování. Výsledek je podobný jako u RS2, či struktura odkazů, kterou můžete vidět tady u mě.

Otevřeme soubor wp-content/themes/default/index.php, najdeme řádky

<div class="navigation">
    <div class="alignleft"><?php next_posts_link('« Previous Entries') ?></div>
    <div class="alignright"><?php previous_posts_link('Next Entries »') ?></div>
</div>

a nahradíme vlastní funkcí. Ta je závislá na počtu článku zobrazovaných na úvodní stránce podle nastavení v administraci, a započítává pouze publikované články. Funkce přepokládá aktivní hezké url, v opačném případě je nutné změnit hodnotu proměnné $link z $link = ( $i == 1 ? '/' : '/page/'.$i.'/' ); na $link = ( $i == 1 ? '/' : '/?paged='.$i );

<?php
function strankovani()  { 
    $vyber = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wp_posts` WHERE `post_status`='publish' AND `post_type`='post'"), 0);
    $limit = mysql_result(mysql_query("SELECT `option_value` FROM `wp_options` WHERE `option_id` = 23"), 0);
    for  ($i = 1; $i <= ceil($vyber/$limit); $i++) {
        $link = ( $i == 1 ? '/' : '/page/'.$i.'/' );
        $last = ( $i*$limit>$vyber ? $vyber : $i*$limit );
        $or   = ( $i*$limit>$vyber ? '' : '|' );
        echo "<a href='".get_settings('home').$link."'>".(($i*$limit)-($limit-1))."-".$last."</a> $or ";
    }
}
?>

<p><strong>Pokračuj</strong>: <?php strankovani() ?></p>

A výsledek:

Pokračuj: 1-10 | 11-20 | 21-23

Doufám, že jsem těm z vás, kteří Wordpress používají svými pár radami alespoň trochu pomohl, a zpříjemnil práci se systémem stejně, jako kdysi sám sobě ;-)

# EDIT 5.4. 2008
Funkce stránkování upravena pro Wordpress 2.3.3 / 2.5

# EDIT 28.4. 2010
Jedná se o návod pro starou verzi Wordpressu, je pravděpodobné, že některé postupy se budou lišit.

Facebook Twitter Google+

Komentáře k článku "Wordpress - vylepšete si svůj redakční systém"

Gravatar
Petr "Pe3ček" Loukota 28. 3 2008, 19:12
1/14 Pátek 28. Března 2008, 19:12  |  Firefox, Windows Vista

Ahoj Miku,
už dříve jsem chtěl na svém blogu používat stránkování indexu, nicméně nefunguje mi to, jak by mělo.
Samotné stránkování se chová, jako bych měl 135 článků, jenže já jich aktuálně mám jen 121. Nevíš, v čem by mohl být problém?

Gravatar
Mike 28. 3 2008, 22:43
2/14 Pátek 28. Března 2008, 22:43  |  Opera, Windows XP

[1] Petr "Pe3ček" Loukota: ahoj, abych se přiznal, nevím, zda-li ti zvládnu poradit. koukám, nejnovější WP, že jo? %0

ale co se týče tvého problému, napadají mě následující možnosti : jestliže článek označíš jako "draft" (nevím, jak je to česky, prostě nepublikovaný článek), na úvodní stránce se nezobrazí ale v databázi uložený je. stejně tak jako stránky (vše je v jedné tabulce)

s těma draftama jsem měl i já kdysi problémy, kamsi je to přičítalo i když nemělo. tohle by mohla být příčina, že se ti do stránkování počítají články, které se nemají zobrazit.

Gravatar
Petr "Pe3ček" Loukota 29. 3 2008, 10:17
3/14 Sobota 29. Března 2008, 10:17  |  Firefox, Windows Vista

[2] Mike: Ano, WP 2.3.3. :)
To by mohlo být. Mám vytvořených 14 stránek, které to pravděpodobně také započítává. Ale jak to udělat, aby nezapočítávalo?

Gravatar
Mike 29. 3 2008, 11:39
4/14 Sobota 29. Března 2008, 11:39  |  Opera, Windows XP

[3] Petr "Pe3ček" Loukota: já si myslel, že to bude něčím takovým %0 zkusil jsem na local naistalovat wordpress 2.3.3, napsat 7 testovacích článků a 4 stránky, ale vypadá to zatím v pohodě.

v čem se projevuje to sčítání stránek a článků? protože jako poslední jsem u tebe našel /page/13/ kde je 1 článek, což by souhlasilo.

Gravatar
Petr "Pe3ček" Loukota 29. 3 2008, 12:01
5/14 Sobota 29. Března 2008, 12:01  |  Firefox, Windows Vista

Můžeš se mi prosím ozvat na ICQ, které najdeš u mě v kontaktu? :-) Myslím, že tam se domluvíme lépe.

Gravatar
Petr "Pe3ček" Loukota 4. 4 2008, 19:16
6/14 Pátek 4. Dubna 2008, 19:16  |  Firefox, Windows Vista

Opravdu mi to nefunguje. Zkoušel jsem funkci již na tvou serverech na WP 2.5 a pořád to dělá to samé. Poslední položkou není 120-122, ale 130-136, protože funkce započítá i 14 existujících stránek. Strana s označením 130-136 samozřejmě vůbec neexistuje.
Hledal jsem na netu všude možně, dokonce jsem zkoušel i plug-inu - bezvýsledně. Napadá mě jen jediné a sice, že bys mi do funkce při sčítání počtu článků z tabulky připsal mínus 14. Kdyby se můj počet stránek změnil, onu čtrnáctku bych přepsal na nové číslo. Já vím, nebylo by to dokonale naprogramované, ale můj problém by to vyřešilo. :)

Gravatar
Mike 5. 4 2008, 13:11
7/14 Sobota 5. Dubna 2008, 13:11  |  Opera, Windows XP

[6] Petr "Pe3ček" Loukota: ahoj, no asi bude opravdu lepší, když se domluvíme na ICQ. takhle přes komentáře je to trochu nešikovný... máš tam ode mě (už celkem dlouho ;-) ) žádost o autorizaci - nick Corwin

Gravatar
Petr "Pe3ček" Loukota 5. 4 2008, 17:01
8/14 Sobota 5. Dubna 2008, 17:01  |  Firefox, Windows Vista

[7] Mike: Hrozně se omlouvám. Používal jsem teď nějakou dobu Mirandu a až včera jsem zjistil, že mi vůbec neupozorňuje na žádosti o autorizace. Teď už by ale mělo být vše v pořádku. Bohužel přezdívek Corwin je více, tak pokud bys mi žádost poslal ještě jednou. :-) Díky a nezlob se!

Gravatar
Mike 5. 4 2008, 20:54
9/14 Sobota 5. Dubna 2008, 20:54  |  Opera, Windows XP

[8] Petr "Pe3ček" Loukota: v prvé řadě gratuluji k jubilejnímu komentáři %2 máš tam ode mě žádost.

PS.: jinak při zadání nicku Corwin + mého jména a příjmení bys mě měl mít hned ;-)

Gravatar
Spyder 22. 6 2008, 20:30
10/14 Neděle 22. Června 2008, 20:30  |  Firefox, Windows XP

Čau Miku, nevíš náhodou kde se ve WP dá nastavit formát času zaslání článku (18th --> 18.) ?? http://www.propecz.wz.cz

Gravatar
Mike 23. 6 2008, 22:25
11/14 Pondělí 23. Června 2008, 22:25  |  Opera, Windows XP

[10] Spyder: data článků už jsem si jednou editoval, když se podíváš například do šablonového adersáře na index.php, jsou na to funkce: the_date() a the_time(), které se dají dohledat v souboru wp-includes/general-template.php, kde je potřeba je zeditovat... což je ale zbytečně složitý a zdlouhavý, takže bych si pár řádků připsal přímo do šablonového souboru.

v proměnné $post, která je objektem vytvořeným mysql_fetch_object najdeš vše potřebné v syrovém tvaru, takže i datum si můžeš naformátovat dle libůstky: (musí to být samozřejmě uvnitř whilu)

<?php while (have_posts()) { the_post(); ?>

// nadpis, text článku atd
echo $post->post_date;

<?php } ?>

Gravatar
Spyder 24. 6 2008, 15:44
12/14 Úterý 24. Června 2008, 15:44  |  Firefox, Windows XP

Díky za čas, ale nakonec sem to udělal pro mě daleko jednoduššim způsobem (asi proto, že v PHP sem začátečník), přepsal jsem

<?php the_time('jS F Y') ?>

na

<?php the_time('j. F Y') ?>

a všechno šlape vpohodě %0 a eště sem se chtěl zeptat, máš tady sice návod na lepší stránkování, ale mě u upravený defaultní šablony stránkování nějak nejede napráskal sem tam asi 9 článků a nic, stránkuje se to třeba po měsících, nebo je třeba to někde zapnout ?

Gravatar
Mike 24. 6 2008, 20:15
13/14 Úterý 24. Června 2008, 20:15  |  Opera, Windows XP

[12] Spyder: tož to je divné... původně jsem psal funkci pro wp 2.0.5, později jsem testoval i pro 2.5 a fungovala v pohodě. koukám, že ty máš 2.51, takže až se k tomu dostanu, opět otestuju pro nejnovější verzi. limit pro stránkování by měl být tahanej přímo z databáze, podle toho, kolik nastavíš v adminsitraci.

sleduj RSS komentářů k tomuto textu, ještě napíšu, k čemu jsem došel. %0 (odkaz na konci článku)

Gravatar
Spyder 24. 6 2008, 21:28
14/14 Úterý 24. Června 2008, 21:28  |  Firefox, Windows XP

Už všechno v pohodě, stačí tam dát alespoň 11 článků a všechno šlape.. šlo tenhle počet ve starších verzích nastavit v administraci (nastavení 2.5.1 sem prolezl a kde nic tu nic), nebo bych musel něco přepsat... ale už to stejně asi nebudu řešit, jsem rád, že to funguje.. doladit pár detailů a hurá na hosting, každopádně díky za odpovědi %0

Tento článek není možné komentovat.

Pro zaslání Vašeho vzkazu použijte Návštěvní knihu.

Parak simati, Muballit mitte, Nergal allatu mellamu mesaru, La tapallah Annuaki, Kettu Puluthu qillatua