Snippety – malí veľkí pomocníci
Malé kúsky kódu, rozširujúce funkčnosť WordPress. Tak by sa jednou vetou dali charakterizovať snippety. Že túto úlohu plnia aj moduly? Iste, svojou povahou sú veľmi podobné, o jedinečnosti snippetov však rozhodujú dva zásadné faktory: nevyžadujú inštaláciu a vďaka minimálnemu objemu nezaťažujú server.
Ako pracovať s WordPress snippetmi?
Najbežnejšou lokalitou pre uloženie snippetov je súbor functions.php v aktívnej téme, rovnako užitočné môžu byť pri globálnom použití v rámci súboru wp-config.php. Stačí otvoriť textový editor a pridať príslušný kód do týchto súborov. Istou nevýhodou ručného vkladania snippetov je ich prepojenie s práve aktivovanou témou okrem vyššie uvedenej výnimky s wp-config.php.
Riešením je modul Code Snippets, ktorý pôsobí systémovo a v pohodlí administračného prostredia ponúka okrem obligátneho pridávania, úpravy, vymazávania vlastných kódov takisto ich zálohu prostredníctvom XML súboru. Jednotlivé snippety je možné aktivovať a vypínať podľa potreby, Code Snippets je použiteľný aj pre Multisite inštaláciu a bonusom pre vás určite bude slovenský preklad tohoto modulu.
WordPress snippety v praxi
S rastúcou popularitou WordPress stúpa aj počet zaujímavých snippetov. Nasledujúci výber je ukážkou z množstva užitočných riešení, niekoľko odkazov na iné zdroje nájdete v závere článku.
Týmto snippetom odoberieme označenie WP verzie z hlavičky stránky
1 2 3 4 |
function remove_wp_version() { return ''; } add_filter('the_generator', 'remove_wp_version'); |
Do hlavičky vložíme jQuery z Google Apis
1 2 3 4 5 |
if( !is_admin() ){ wp_deregister_script('jquery'); wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"), false, ''); wp_enqueue_script('jquery'); } |
alebo font s podporou slovenskej diakritiky z Google Fonts
1 2 3 4 5 |
function load_fonts() { wp_register_style ('googleFonts', 'http://fonts.googleapis.com/css?family=News+Cycle&subset=latin,latin-ext'); wp_enqueue_style( 'googleFonts'); } add_action('wp_print_styles', 'load_fonts'); |
Vypneme zobrazenie admin baru pre všetkých používateľov okrem administrátorov
1 2 3 |
if (!current_user_can('administrator')): show_admin_bar(false); endif; |
Upravíme informácie o používateľovi v jeho profile
1 2 3 4 5 6 7 8 9 |
function new_contactmethods( $contactmethods ) { $contactmethods['twitter'] = 'Twitter'; // pridame Twitter $contactmethods['facebook'] = 'Facebook'; // pridame Facebook unset($contactmethods['yim']); // odoberieme Yahoo IM unset($contactmethods['aim']); // odoberieme AIM unset($contactmethods['jabber']); // odoberieme Jabber return $contactmethods; } add_filter('user_contactmethods','new_contactmethods',10,1); |
Odoberieme prednastavené WordPress widgety
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function unregister_default_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); unregister_widget('WP_Widget_Archives'); unregister_widget('WP_Widget_Links'); unregister_widget('WP_Widget_Meta'); unregister_widget('WP_Widget_Search'); unregister_widget('WP_Widget_Text'); unregister_widget('WP_Widget_Categories'); unregister_widget('WP_Widget_Recent_Posts'); unregister_widget('WP_Widget_Recent_Comments'); unregister_widget('WP_Widget_RSS'); unregister_widget('WP_Widget_Tag_Cloud'); unregister_widget('WP_Nav_Menu_Widget'); unregister_widget('Twenty_Eleven_Ephemera_Widget'); } add_action('widgets_init', 'unregister_default_widgets', 11); |
Zakážeme použitie vizuálneho editora
1 |
add_filter('user_can_richedit' , create_function('' , 'return false;') , 50); |
Zvolíme vlastnú dĺžku výpisu príspevkov
1 2 3 4 |
custom_excerpt_length($length) { return 100; } add_filter('excerpt_length', 'custom_excerpt_length'); |
Zmeníme presmerovanie po prihlásení používateľa
1 2 3 4 5 6 7 |
add_action('login_form', 'redirect_after_login'); function redirect_after_login() { global $redirect_to; if (!isset($_GET['redirect_to'])) { $redirect_to = get_option('siteurl'); // presmerujeme na homepage } } |
Autorovi povolíme 7 dní možnosť úpravy už publikovaného príspevku
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function stop_post_editing_filter( $capauser, $capask, $param){ global $wpdb; $post = get_post( $param[2] ); if( $post->post_status == 'publish' ){ // obmedzenie bude platit pre rolu Autor if( $capauser['author'] == 1 ){ if( ( $param[0] == "edit_post") || ( $param[0] == "delete_post" ) ) { $post_time_unix = strtotime( str_replace('-', ':', $post->post_date ) ); $current_time_unix = time(); $diff = $current_time_unix - $post_time_unix; $hours_after_publication = floor( $diff / 60 / 60 ); // po 168 hodinach od publikovania bude automaticky vypnuta moznost dalsej upravy prispevku if( $hours_after_publication >= 168 ){ foreach( (array) $capask as $capasuppr) { if ( array_key_exists($capasuppr, $capauser) ) { $capauser[$capasuppr] = 0; } } } } } } return $capauser; } add_filter('user_has_cap', 'stop_post_editing_filter', 100, 3 ); |
Nastavíme interval automatického uloženia príspevku na 10 minút – 60 sekúnd x 10 (v súbore wp-config.php)
1 |
define('AUTOSAVE_INTERVAL', 600); |
Vypneme ukladanie revízií príspevkov (v súbore wp-config.php)
1 |
define('WP_POST_REVISIONS', false); |
Alebo nastavíme limit počtu revízií príspevkov na 5
1 |
define('WP_POST_REVISIONS', 5) |
Každých 5 dní automaticky vyprázdnime kôš (v súbore wp-config.php)
1 |
define('EMPTY_TRASH_DAYS', 5 ); |
Vložíme odkaz na úpravu príspevku (napr. v súboroch single.php alebo page.php)
1 |
<?php edit_post_link ('Upraviť príspevok'); ?> |
Najznámejšie zdroje WordPress snippetov
Zálohujte, zálohujte, zálohujte!
Murpyho zákon hovorí jasne: čím väčšia chyba v kóde je, tým neočakávanejším spôsobom sa prejaví. Ak sa chcete vyhnúť prípadným komplikáciám, nezabudnite urobiť zálohu upravovaného súboru a databázy.
Napsat komentář