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.
Komentáře k článku:
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?
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?
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. :)
Tento článek není možné komentovat.
Pro zaslání Vašeho vzkazu použijte Návštěvní knihu.